在 JavaScript 中使用带有局部变量的 'window' 进行全局访问



我想全局访问一个局部变量(不更改变量的名称空间或位置)。我读到我可以使用"window",但它不起作用:

var myNameSpace = {
        window.localVar : 'foo'
    };
alert(window.localVar);  // Not working

JSFiddle

这样的东西行得通吗?

此外,我读过关于全局变量的风险。如果我几乎可以肯定一个变量的名称没有被重用的风险,那么它安全吗?

$myTotallyUniqueVarName
var myNameSpace = { };
myNameSpace.localVar = window.localVar = 'foo';

当从另一个对象定义时,您无法访问另一对象,就像您尝试的那样。但是,您当然可以创建多个对同一值的引用/赋值,如上所示。

但是,请注意,在这种情况下,我们分配一个基元值,这意味着window.localVarmyNameSpace.localVar将拥有它们自己的唯一值。任何变化都不会反映在另一边。

每个以某种方式与全局对象相关的变量都可以全局访问。在浏览器中,窗口变量表示全局对象。

function a() {
  bvar = 3; // Accessible
  var cvar = 4; // Inaccessible
}
a();
alert(window.bvar === 3); // true
alert(window.cvar === 4); // false, cvar is undefined
// This refers here to the global object
alert(window.bvar === this.bvar); // true

相关内容

  • 没有找到相关文章

最新更新