今天来简单聊一聊最近写毕设用的非常多的IIFE。
首先来看一段javascript
1 | (function(){ |
这其实就是IIFE(立即执行的函数表达式)
。
不知道大家写这个之前会不会想这样写有什么用途?一般是用在什么地方?
IIFE有什么用途
1.总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域。这一举措可防止全局命名空间被污染。
所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:
1 | (function (global) { |
2.IIFE 还可确保你的代码不会轻易被其它全局命名空间里的代码所修改(i.e. 第三方库,window 引用,被覆盖的未定义的关键字等等)。
IIFE一般用在什么地方
1.无论何时,想要创建一个新的封闭的定义域,那就用 IIFE。它不仅避免了干扰,也使得内存在执行完后立即释放。
2.所有脚本文件建议都从 IIFE 开始。
一般怎么写IIFE
推荐
1 | (function(){ |
1 | (function($, w, d){ |