JavaScript立即执行函数

即函数在定义后立即被执行

  • 定义:此函数没有声明,再一次执行过后即释放(被销毁),适合做初始化工作。

    ​ 立即执行函数也有参数,返回值和预编译

//语法格式:
//第一种
(function () {
    console.log("立即执行函数")
})();
//第二种  ,w3c建议使用这一种
(function () {
    console.log("javascript")
}());



//例
(function (a,b,c) {
    console.log(a + b + c * 2);
}(1,2,3));  //这一行中1,2,3是实参


var num = (function (a,b,c) {
    var d = a + b + c * 2 - 2;
    return d;
}(1,2,3));
//num = 7

只有表达式才能被执行符号执行

能被执行符号执行的表达式,这个函数的名字就会被自动忽略(放弃名字)

能被执行符号执行的表达式基本上是立即执行函数

​ 函数声明和函数表达式时俩个东西,虽然都能定义函数

函数声明:function test() {} 函数表达式:var test = function() {}

例:

function test() {
	var a = 123;
}
test();

这是函数声明,不能执行,报语法错误,因为只有表达式才能被执行符号执行

var test = function () {
	console.log("a")
}()

test是表达式,所以能执行。

+ function test() {
	console.log("123");
}()

这是表达式,可以被执行,此时在控制台执行test()的结果是undefined,因为这个函数的名字会被放弃

加了一个”+“,在趋势上要将它转换为数字,就是表达式了,是表达式就能被执行,就会被放弃名字,所以在控制台上执行test()就会报错,这就是立即执行函数。

同样放了 ” + “ ,” - “ ,” !“ 就会放弃函数名字,就会转换为表达式;但是 ” * “ 和 ” / “ 不行,& 和 || 前面放东西也行

例: var test = function () {}

其中 =function () {}把function赋到test里面去叫表达式,var test 是声明

在执行时,会放弃这个函数,储存到 test 里面储存引用,让这个 test 恢复到被声明的状态

( function test() { 
	console.log("123"); 
})()

这个被()抱起来的function函数声明变表达式了,就能被外面的最后的() 所执行了

外面的最大的括号是数学运算符,是最先被执行的,其他括号都是有语法意义的,就把函数变表达式了

()也是数学运算符,就能打印 123 ,但是执行 test() 就报错,所以就可以直接不写test()

function test(a , b , c) {
	console.log(a + b + c);
}(1 , 2 , 3)

这样子写理论上不会执行,只写 () 就会被当成执行符,但是写成 (1,2,3) 之后暂时不会被当成运算符,没意义

不会执行,也不会报错,还能调用 test()。

立即执行函数的作用

  • 初始化页面和数据。
  • 创建一个独立的作用域,这个作用域里面的变量外面访问不到(即避免了变量污染)。
posted @   Allure小新  阅读(116)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示