JavaScript Window 对象总是可访问的?

标签 javascript scope window

我们看到这种方法一直在使用:

(function (window) {
    var document = window.document,
        location = window.location,
        navigator = window.navigator;
})(window)

在研究上面的片段时,我想知道为什么将像 window 这样的全局可访问对象作为参数传递给函数。难道是:

  1. 开发人员不能 100% 确定可以从本地函数范围内访问窗口吗?
  2. 这是一种很好的做法,因为您可以向阅读您代码的其他开发人员明确说明您的意图。
  3. 你已经看到 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/

相关文章:

C++:隐藏一些函数

javascript - 变量没有被正确分配,可能的范围问题(在 getJSON() 中的 each() 中有一个开关的函数)

c++ - 我的 C++ 窗口出现错误

javascript - Gridview 编辑项模板中无法识别文本框

javascript - React 然后返回无法读取未定义的属性

javascript - 在任何给定时间仅允许 Backbone 集合中的一个模型具有事件属性

arrays - golang 中的变量范围

php - 关闭窗口停止 php 脚本?

android - 如何在windows中从git获取代码

javascript 从开始日期和时间开始计数,多个目标