返回介绍

第一部分 类型和语法

第二部分 异步和性能

A.3 全局 DOM 变量

发布于 2023-05-24 16:38:21 字数 536 浏览 0 评论 0 收藏 0

你可能已经知道,声明一个全局变量(使用 var 或者不使用)的结果并不仅仅是创建一个全局变量,而且还会在 global 对象(在浏览器中为 window )中创建一个同名属性。

还有一个不太为人所知的事实是:由于浏览器演进的历史遗留问题,在创建带有 id 属性的 DOM 元素时也会创建同名的全局变量。例如:

<div id="foo"></div>

以及:

if (typeof foo == "undefined") {
  foo = 42;    // 永远也不会运行
}

console.log( foo );  // HTML元素

你可能认为只有 JavaScript 代码才能创建全局变量,并且习惯使用 typeof 或 .. in window 来检测全局变量。但是如上例所示,HTML 页面中的内容也会产生全局变量,并且稍不注意就很容易让全局变量检查错误百出。

这也是尽量不要使用全局变量的一个原因。如果确实要用,也要确保变量名的唯一性,从而避免与其他地方的变量产生冲突,包括 HTML 和其他第三方代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文