1.什么是IIFE
IIFE意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数。
2.为什么需要IIFE
有些情况下需要立即执行一个函数,这种情况下用IIFE确实方便许多。
如果只是为了立即执行一个函数,显然IIFE所带来的好处有限。
实际上,IIFE的出现是为了弥补JS在scope方面的缺陷:JS只有**全局作用域(global scope)**、**函数作用域(function scope)**,从ES6开始才有**块级作用域(block scope)**。对比现在流行的其他面向对象的语言可以看出,JS在访问控制这方面是多么的脆弱!
那么如何实现作用域的隔离呢?在JS中,只有function才能实现作用域隔离,因此如果要将一段代码中的变量、函数等的定义隔离出来,只能将这段代码封装到一个函数中。
在我们通常的理解中,将代码封装到函数中的目的是为了复用。在JS中,当然声明函数的目的在大多数情况