码迷,mamicode.com
首页 > 其他好文 > 详细

IIFE的形式、原理和常见写法

时间:2018-04-01 23:02:16      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:imm   目的   console   函数表达式   glob   blog   iat   foo   代码   

immediately invoked function expression

立即调用的函数表达式

出现的形式:

最近做牛客网的JS在线编程,遇到几道考闭包的题目,发现闭包的尾巴那儿经常会出现一对小括号。

举个栗子:

var result = function(str3){
         return function(){
            return fn(str1,str2,str3);
        };
    }(str1,str2);  //尾巴这里的小括号叫做‘立即执行函数表达式’,表示声明的同时立即调用这个函数
    

所以百度了一些

出现的意思/为什么要有IIFE?

因为在es6提出块作用域之前,js只有全局作用域global scope和函数作用域function scope。

JS只能用function用来实现作用域的隔离。

意思就是,想隔离谁(变量、函数),就把定义它的这段代码装到一个function里。

因此经常会见到只出现一次的function。而一般我们封装函数的目的是为了重复多次地调用。为了实现作用域的隔离这么做,有违初衷。因此就出现了IIFE,在声明的同时立刻调用,不用再另起炉灶。
既然只使用一次,那么立即执行好了!既然只使用一次,函数的名字也省掉了!

IIFE的常见写法

(function foo(){  
  var a = 10;  
  console.log(a);  
})();  
(functionfoo(){  
  vara=10;  
  console.log(a);  
}()); 

一种写在括号内,一种写在括号外;

IIFE的形式、原理和常见写法

标签:imm   目的   console   函数表达式   glob   blog   iat   foo   代码   

原文地址:https://www.cnblogs.com/n2meetu/p/8688485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!