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()。
立即执行函数的作用
- 初始化页面和数据。
- 创建一个独立的作用域,这个作用域里面的变量外面访问不到(即避免了变量污染)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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语句:使用策略模式优化代码结构