什么是 立即执行函数
英文全称为
Immediately Invoked Function Expression
立即地 调用 函数 表达式
函数声明 !== 函数表达式
函数表达式
把一个(匿名)函数(函数表明式)赋值给一个变量的形式
()
执行符号
- 对于函数名后面的括号
- 执行符号只能跟在函数表达式后面 ```javascript test();
function(){ console.log(‘Function Declaration’); }(); ^^ 语法错误
所以当一个函数需要立即执行的情况,该函数必需形成表达式形式
<a name="VFcZC"></a>
## 表达式
> 1
> (1)
> +1
> -1
> !1
> ~1
```javascript
var a = function (){
console.log('Function Expression');
}();
+ function (){
console.log('Function Expression');
}();
~ function (){
console.log('Function Expression');
}();
//...所有表达式都可以在后面加执行符号
// 实践中习惯的IIEF
;(function(){
console.log('Function Expression');
})();
// W3C推荐
(function(){
console.log('Function Expression');
}());
IEFF作用
- 可以创建一个与外界没有任何关系的作用域
- 独立作用域
- 执行完成后自动销毁
- ES3 ES5 立场上没有模块概念,立即执行函数来模拟模块化
- 封装作用域
- 抛出接口
- 向外部抛出一系列属性和方法
- window上保存属性和方法