说说你对“立即执行函数”的理解
什么是立即执行函数?
JS立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。
立即执行函数的两种常见写法:
(function(){
//...
})()
- 匿名函数后面跟一个小括号,整个包裹在一个括号运算符中
(function(){
//...
}())
(),!,+,-,=等运算符都能起到立即执行的作用,这些运算符的作用就是将匿名函数或函数声明转换为函数表达式。
注意:
- 函数体后面要有小括号()
- 函数体必须是函数表达式而不能是函数声明
例:
(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);
好处:
- 不必为函数命名,避免了污染全局变量
- 立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量
- 封装变量
总之:立即执行函数会形成一个单独的作用域,可以封装一些临时变量或者局部变量,避免污染全局变量。