我们看到这种方法一直在使用:
(function (window) {
var document = window.document,
location = window.location,
navigator = window.navigator;
})(window)
在研究上面的片段时,我想知道为什么将像 window
这样的全局可访问对象作为参数传递给函数。难道是:
- 开发人员不能 100% 确定可以从本地函数范围内访问窗口吗?
- 这是一种很好的做法,因为您可以向阅读您代码的其他开发人员明确说明您的意图。
- 你已经看到 John Resig 这样做了,所以它一定是舔手指的好!
你怎么看?
最佳答案
它使代码更具可移植性。
您可以将代码复制并粘贴到未定义全局窗口对象(例如节点)但 API 兼容代码中您关心的所有内容的环境中。然后你只需要修改传递给函数的参数。
稍微修改一下,使代码更清晰:
(function(root){
var document = root.document,
location = root.location,
navigator = root.navigator;
})(window)
关于JavaScript Window 对象总是可访问的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962641/