FrankKai / FrankKai.github.io

FE blog
https://frankkai.github.io/
363 stars 39 forks source link

IIFE(立即执行函数)那些事儿 #69

Open FrankKai opened 6 years ago

FrankKai commented 6 years ago

IIFE(Immediately Invoked Function Expression)是一个定义即运行的JavaScript函数。

它是一种设计模式,是为了做Self-Executing Anonymous Function (自执行匿名函数),并且包含2个主要的部分。 第一个是与特定词法作用域相关的在Grouping Operator()中的匿名函数。这会不能访问IIFE惯用语中的变量,不会污染全局作用域。 第二个部分是创建立即执行函数的表达式(),js引擎通过它直接解析函数。

例子 函数变成一个立即执行的函数表达式。表达式内的变量不能外部获取不到。

(function(){
    var aName = "Barry";
})();
aName;//抛出"Uncaght ReferenceError:aName is not defined"

将IIFE返回值分配给一个变量

var result = (function(){
    var name = "Barry";
    return name;
})();
result;//"Barry"
FrankKai commented 6 years ago

QA环节:

拿上面的例子来说,将anonymous函数包裹起来的是分组Group Opetator。它可以保证变量只声明在匿名函数内部,不会污染全局的命名空间。

下面代码中function(){}外部的圆括号指的就是Group Operator。

(function(){
    var aName = "Barry";
})
FrankKai commented 6 years ago

总结一下:

FrankKai commented 6 years ago

引申环节: