"块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了"
在看阮一峰老师关于ES6的那本书里有上面这样一句话,不是很理解
希望哪位大大可以帮我解答一下。
"块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了"
在看阮一峰老师关于ES6的那本书里有上面这样一句话,不是很理解
希望哪位大大可以帮我解答一下。
JavaScript有很多致命的缺陷,所以机智的开发者们想出了各种奇淫技巧来弥补它设计上的以及历史上遗留下来的坑.
比如JavaScript中没有namespace
(命名空间),而且只有function
(函数)代码的内部可以隔离作用域,自调用,立即执行函数则可以用来防止变量扩散到全局,这样就能很好的避免各种JavaScript库产生冲突。
ES6以前变量的作用域是函数范围,有时在函数内局部需要一些临时变量,因为没有块级作用域,所以就会将局部代码封装到IIEF中,这样达到了想要的效果又不引入多余的临时变量。而块作用域引入后,IIEF当然就不必要了!
如上面的代码,tmp被封装在IIFE中,就不会污染上层函数;而有块级作用域,就不用封装成IIEF,直接放到一个块级中就好。