function(window, document)这种写法有什么意义吗

(function(window, document) {
    //todo something
})(window, document);

看到好多人这么写,有什么意义么?
window,document作为全局的变量有必要传参数到立即执行的匿名函数内部么?

阅读 5.8k
4 个回答

一:代码压缩时window,document参数可以写成w,d之类,如果访问到全局变量则不能压缩
二:性能优化,把全局变量传入函数,在函数内就有了window和docment的局部变量,每次访问在函数内可以找到,就不用再去全局找

js压缩的时候有点用处

关于内存方面,
全局变量是在内存中开辟一块内存,直到你关闭这个页面,才会销毁。
局部变量当你执行完函数,并且不再使用的时候,就会销毁。

对就赞,错就改

(function(window,doc) {

// doc == document
doc.xxx

})(window,document);
可以理解了吗?

里面是局部变量,外部是全局变量。
好处是与其他代码混合的时候不会混淆全局变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题