javascript - 在(桌面)浏览器中引用内置全局属性 X 时应该写 window.X 吗?

标签 javascript browser window global-variables

因此,(桌面)浏览器中有许多内置的全局属性。例如:

  • 文档
  • 未定义
  • parseInt
  • JSON
  • 位置
  • 警报
  • 设置超时
  • 等等

在引用这些属性时,是否应该通过在它们的名称前加上 window. 前缀来明确地将它们标记为全局属性?所以,例如:

var wrap = window.document.getElementById('wrap');

window.setTimeout(loop, 100);

var x = window.parseInt(input.value, 10);

我认为这个问题有三个答案:

  1. 是的,在引用全局属性时,您应该始终编写 window.X

  2. 不,您不必编写window.X。只需 X 即可。

  3. 这取决于属性。对于某些属性,使用 window.X,对于其他一些属性,使用 X。 (如果这是你的答案,请详细说明。)

那么,它是什么?

最佳答案

我会选择 3:除了少数异常(exception),没有 window

在浏览器中,window 指的是全局范围。 window. 中的 window.prompt() 是多余的。您可以使用它来强调 prompt()window 对象的一个​​方法。

我永远不会使用像 window.Mathwindow.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/

相关文章:

javascript - 更改事件输入框上的标签颜色

css - 将现有 CSS 布局转换为 IE4 友好的快速方法?

javascript - 如何在 HTML 表单中抑制或转换弯引号等字符?

java - 纹理未正确加载 slick java

php - 删除 WWW 的表单。并在输入上打印结果?

JavaScript 正则表达式 : Testing string for intelligent query

linux - Linux 上的无边框窗口

c# - 窗口样式和使用控件(C# 和 WPF)

javascript - Google Charts HTML 工具提示里面有 javascript onclick 事件吗?

web-services - 如何发布可通过浏览器访问的 Web 服务生成的数据文件