javascript中的全局变量和window.variable有什么区别?
|
我正在阅读ribs.js文档,并看到了许多将属性分配给window对象的代码:
window.something = \"whatever\";
调用此代码与仅分配变量并创建全局var之间有什么区别,如下所示:
something = \"whatever\";
我认为存在某种范围上的差异,和/或对象所有权上的差异(窗口是所有者而不是所有者),但我对两者之间的详细信息以及为什么我要使用窗口而不是不使用它感兴趣。
没有找到相关结果
已邀请:
6 个回复
舞备联
是全局上下文1)。
在
上设置属性
。
表示错别字或故意有误。 由于我必须仔细检查它是否是错字,因此我个人认为直接设置
更具可读性。 另外,在ES5严格模式下,
是非法分配,因为未声明
并将抛出
。 编辑: 如注释中所述,
将一直在变量
的范围链中向上查找,如果找到,将其重新分配给with13ѭ。如果找不到,它将创建一个新的全局变量。 同样使用
,您只是为对象分配属性,可以使用
将其删除。 在ES5严格模式下,对变量
无效。 1在其他环境(例如node.js和Web Workers)中,全局对象可能有另一个名称,并且
可能根本不存在。 Node.js使用
,Web Workers使用
。
视蕉梁拌客
属性,您可以确定无论处于什么范围内,都在访问全局变量。 例如 :
换句话说,如果您想使用全局变量,通过它们的容器访问它们会更加安全:
荤碗
勘掸府迫路
无法通过稍后进行的重构来拦截。 使用
意味着如果以后将代码移到已定义
的闭包中,它将不再在全局对象上进行设置。
桔马牛
公藕