因此,(桌面)浏览器中有许多内置的全局属性。例如:
文档
未定义
parseInt
JSON
位置
警报
设置超时
- 等等
在引用这些属性时,是否应该通过在它们的名称前加上 window.
前缀来明确地将它们标记为全局属性?所以,例如:
var wrap = window.document.getElementById('wrap');
和
window.setTimeout(loop, 100);
和
var x = window.parseInt(input.value, 10);
我认为这个问题有三个答案:
是的,在引用全局属性时,您应该始终编写
window.X
。不,您不必编写
window.X
。只需X
即可。这取决于属性。对于某些属性,使用
window.X
,对于其他一些属性,使用X
。 (如果这是你的答案,请详细说明。)
那么,它是什么?
最佳答案
我会选择 3:除了少数异常(exception),没有 window
。
在浏览器中,window
指的是全局范围。 window.
中的 window.prompt()
是多余的。您可以使用它来强调 prompt()
是 window
对象的一个方法。
我永远不会使用像 window.Math
或 window.NaN
这样的东西,因为这些属性是全局对象,与 window
无关> object 是浏览器中的全局对象。另见 Global Properties and Functions Defined in ECMAScript .
如果当前(本地)作用域中有另一个名为 prompt
的变量,则还需要 window.
前缀才能获得提示对话框,如下所示:
(function() {
var prompt = "Give me your name!";
var name = window.prompt(prompt, "your name");
})();
要设置全局变量,您还应该添加 window.
前缀以满足 jslint 等工具的要求。 . (否则,看起来就像是您忘记了 var
关键字,从而意外地泄漏了全局范围内的变量):
(function() {
// "WRONG"
somevar = 1;
// You probably want to set a local variable, so should use:
var somevar = 1;
// take away the confusion, you really wanted to set a global variable:
window.somevar = 1;
})();
通常,省略 window.
可以提高可读性,考虑下一个例子:
window.setInterval(function() {
var numA = window.parseInt(window.document.getElementById("numA").value, 10);
var numB = window.parseInt(window.document.getElementById("numB").value, 10);
window.document.getElementById("avg").value = window.Math.floor((numA + numB) / 2);
}, 1000);
关于javascript - 在(桌面)浏览器中引用内置全局属性 X 时应该写 window.X 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460593/