61

我正在浏览一些代码,并且在我们拥有的脚本的开头var emailID = email。稍后,代码通过 go 引用 emailID window.emailID。我想知道允许您通过 window.variableName 引用变量的规则是什么?

我不能在网上发布我的剧本,因为它与我的工作直接相关并且会违反我的合同。

4

6 回答 6

105

window.variableName表示该变量是在全局范围内声明的。这意味着任何 JS 代码都可以访问这个变量。usingwindow.不是必需的,但经常用作表示变量是全局变量的约定。

通常要避免使用全局变量。您应该在函数范围内定义变量。

于 2012-06-22T01:14:11.423 回答
25

JavaScript 中的全局变量附加到“全局对象”,在浏览器环境中它被window称为对象 - 这就是为什么您可以将全局变量称为variableNamewindow.variableName

还值得一提的是,在 JavaScript 中使用全局变量并不被认为是好的编码习惯。

这是一个很好且非常详细的解释

于 2012-06-22T01:14:27.830 回答
17

window.myVar或者window["myVar"]是引用全局变量的显式方式。

如果变量是在函数外部声明的(带有或不带有“var”),或者如果它在函数内部声明而不使用“var”,或者如果它被声明为window.myVaror ,则它是全局变量window["myVar"]

变量是通过给它赋值或使用关键字来声明的var

引用全局变量很有用的一种情况window.myVar是,如果您在一个具有名为 的局部变量的函数中myvar。在这种情况下,myVar指的是局部变量,而window.myVar指的是全局变量。

于 2012-06-22T01:24:26.283 回答
13

JavaScript 中的全局变量

var no =10;
function getNo()
   alert(no); // 10
}
getNo();

当一个全局变量被设置时,它被添加到窗口对象中!

var no =10;
function getNo()
   alert(window.no); // 10
}
getNo();

我们可以直接设置窗口变量。

function setNo(){
  window.no=100;
}
function getNo()
   alert(window.no); // 100
}
setNo();
getNo();
于 2014-06-04T12:47:25.380 回答
2

对于纯理论解释(因为我自己遇到了这个“问题”)和易于消化的信息,你可以这样看待问题:

var myName = "Bob" 等于 - globalObject(Window) = { myName: "Bob" }

因此,当您声明一个变量时,该变量名将作为属性传递给窗口对象,并将其值作为属性值。这就是为什么您基本上可以将变量作为窗口对象的对象方法来调用的原因。

于 2017-08-11T22:34:14.507 回答
0

它用于在 JavaScript 中定义全局变量。

globalVar = "Hello World";
function function1(){
    alert(window.globalVar);
} 
function1();

这将在弹出窗口中打印“Hello World”。

    function function1(){ 
        globalVar = "Hello World";
        alert(window.globalVar);
    }function function2(){
        alert(window.globalVar);
    } 
    function1(); 
    function2();

这将创建两个值为“Hello World”的弹出窗口,一个来自 function1(),另一个来自 function2()。

因此,通过使用 window,我们可以从 javascript 中的任何范围调用变量。

于 2017-12-06T06:06:41.830 回答