说说你对“立即执行函数”的理解
参考答案:
什么是立即执行函数?
JS立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。
立即执行函数的两种常见写法:
- 匿名函数包裹在一个括号运算符中,后面跟一个小括号
js
(function(){
//...
})()- 匿名函数后面跟一个小括号,整个包裹在一个括号运算符中
js
(function(){
//...
}())(),!,+,-,=等运算符都能起到立即执行的作用,这些运算符的作用就是将匿名函数或函数声明转换为函数表达式。
注意:
- 函数体后面要有小括号()
- 函数体必须是函数表达式而不能是函数声明
例:
js
(function (test) { //使用()运算符,输出123
console.log(test);
})(123);
(function (test) { //使用()运算符,输出123
console.log(test);
}(123));
!function (test) { //使用!运算符,输出123
console.log(test);
}(123);
var fn = function (test) { //使用=运算符,输出123
console.log(test);
}(123);好处:
- 不必为函数命名,避免了污染全局变量
- 立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量
- 封装变量
总之:立即执行函数会形成一个单独的作用域,可以封装一些临时变量或者局部变量,避免污染全局变量。
题目要点:
立即执行函数(Immediately Invoked Function Expression,简称 IIFE)是一种在 JavaScript 中常见的模式,用于创建一个匿名函数,并在定义后立即执行它。
立即执行函数有两种常见的写法:
匿名函数后跟小括号,整个包裹在一个括号运算符中:
js(function(){ //... }())匿名函数包裹在一个括号运算符中,后面跟一个小括号:
js(function(){ //... })()
好处
- 避免全局污染:不必为函数命名,因此不会污染全局命名空间。
- 私有作用域:立即执行函数内部形成了一个单独的作用域,可以封装私有变量。
- 封装变量:可以封装一些临时变量或局部变量,这些变量在外部无法访问。