首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript中的全局var和window.variable有什么区别?

javascript中的全局var和window.variable有什么区别?
EN

Stack Overflow用户
提问于 2011-06-15 03:51:27
回答 4查看 34.5K关注 0票数 81

我正在阅读backbone.js文档,并看到了许多将属性分配给窗口对象的代码:

代码语言:javascript
复制
window.something = "whatever";

调用这段代码和只赋值变量并创建全局变量之间有什么区别,如下所示:

代码语言:javascript
复制
something = "whatever";

我假设有一些不同的作用域,和/或对象所有权的差异(窗口是所有者和不是),但我感兴趣的是两者之间的细节,以及为什么我会使用窗口而不使用它。

EN

回答 4

Stack Overflow用户

发布于 2011-06-15 04:14:19

它们都做着同样的事情。

但是通过访问window属性,您可以肯定地知道,无论您处于什么作用域中,都可以访问全局变量。

例如:

代码语言:javascript
复制
globalVar = "smth";
function(){
    var globalVar = 2;
    alert(globalVar);// points to the current scope globalVar
    alert(window.globalVar);// points to the original globalVar
}

换句话说,如果您想使用全局变量,那么通过它们的容器访问它们会更安全一些:window.variable

票数 12
EN

Stack Overflow用户

发布于 2011-06-15 04:04:44

正如Raynos提到的,关键是它是在window对象上显式设置的。在浏览器中,全局对象与窗口对象相同,但在其他环境中(例如,node.js,或者可能在移动设备上的某种网络视图中运行),全局对象可能不同。

票数 6
EN

Stack Overflow用户

发布于 2011-06-15 03:58:40

不同之处在于,window.foo = bar;不能被稍后完成的重构截获。使用foo = bar;意味着,如果在以后将代码移动到定义了var foo的闭包中,它将不再在全局对象上设置它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6349232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档