什么是 立即执行函数
英文全称为
Immediately Invoked Function Expression
立即地 调用 函数 表达式
函数声明 !== 函数表达式
函数表达式
把一个(匿名)函数(函数表明式)赋值给一个变量的形式
()
执行符号
- 对于函数名后面的括号
- 执行符号只能跟在函数表达式后面 ```javascript test();
function(){ console.log(‘Function Declaration’); }(); ^^ 语法错误
所以当一个函数需要立即执行的情况,该函数必需形成表达式形式<a name="VFcZC"></a>## 表达式> 1> (1)> +1> -1> !1> ~1```javascriptvar 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上保存属性和方法
