什么是 立即执行函数

英文全称为

Immediately Invoked Function Expression
立即地 调用 函数 表达式

函数声明 !== 函数表达式

函数表达式

把一个(匿名)函数(函数表明式)赋值给一个变量的形式

()

执行符号

  • 对于函数名后面的括号
  • 执行符号只能跟在函数表达式后面 ```javascript test();

function(){ console.log(‘Function Declaration’); }(); ^^ 语法错误

  1. 所以当一个函数需要立即执行的情况,该函数必需形成表达式形式
  2. <a name="VFcZC"></a>
  3. ## 表达式
  4. > 1
  5. > (1)
  6. > +1
  7. > -1
  8. > !1
  9. > ~1
  10. ```javascript
  11. var a = function (){
  12. console.log('Function Expression');
  13. }();
  14. + function (){
  15. console.log('Function Expression');
  16. }();
  17. ~ function (){
  18. console.log('Function Expression');
  19. }();
  20. //...所有表达式都可以在后面加执行符号
  21. // 实践中习惯的IIEF
  22. ;(function(){
  23. console.log('Function Expression');
  24. })();
  25. // W3C推荐
  26. (function(){
  27. console.log('Function Expression');
  28. }());

IEFF作用

  1. 可以创建一个与外界没有任何关系的作用域
    1. 独立作用域
  2. 执行完成后自动销毁
  3. ES3 ES5 立场上没有模块概念,立即执行函数来模拟模块化
    1. 封装作用域
    2. 抛出接口
      1. 向外部抛出一系列属性和方法
      2. window上保存属性和方法