立即执行函数 IIFE
立即执行函数表达式 IIFE(Immediately-invoked function expression) 我们知道,在javascript(ES5)中,是没有块级作用域的概念的。看一个例子 for (var i = 0; i < 5; i++) { } console.log(i); //5 因为没有块级作用域的概念,因此,在 for 循环中声明的 i 变量实际上是一个全局变量,因此可以在全局环境中访问的到。 块级作用域,也可以称为私有作用域。也就是说只在for循环的语句块中有定义,一旦循环结束,变量 i 就会被销毁。而在ES5中,我们主要通过匿名函数的方式来块级作用域。 用作块级作用域(私有作用域)的匿名函数的语法: (function() { //此处是块级(私有)作用域 })() 以上代码定义并立即调用了一个匿名函数。将函数声明包含在一对圆括号中,表示它实际上是一个函数表达式。看看这种写法是如何产生的 var a = function() { console.log(123); }; a(); //123 我们将一个匿名函数赋值给了一个全局变量a,然后调用了这个函数 当然也可以这样调用函数 var a = function() { console.log(123); }; a(); //123 既然这种方式可以立即执行一个函数