javascript - "Implied Global variables"有哪些问题?

标签 javascript namespaces global-variables

JavaScript: The Good Parts 将这些类型的声明定义为错误的:

foo = value;

这本书说“JavaScript 使被遗忘的变量成为全局变量的策略创造了 很难发现的错误。”

除了典型全局变量的通常危险之外,这些隐含的全局变量还有哪些问题?

最佳答案

正如关于 this answer 的评论中所讨论的那样, 设置某些值可能会产生意想不到的后果。

在 Javascript 中,这更有可能是因为设置全局变量实际上意味着设置 window 对象的属性。例如:

function foo (input) {
    top = 45;
    return top * input;
}
foo(5);

这将返回 NaN,因为您无法设置 window.top 并且乘以 window 对象不起作用。将其更改为 var top = 45 即可。

您无法更改的其他值包括 document。此外,还有其他全局变量,设置后会做一些令人兴奋的事情。例如,设置 window.status 会更新浏览器的状态栏值,而 window.location 会转到新位置。

最后,如果你更新一些值,你可能会失去一些功能。例如,如果您将 window.frames 设置为字符串,则您不能使用 window.frames[0] 访问框架。

关于javascript - "Implied Global variables"有哪些问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909578/

相关文章:

javascript - 如何使 array.forEach(async fn) 同步?

javascript - 在 javascript 中返回某个值的函数上使用 new?

javascript - 如何阻止变量在 JavaScript 中按 F5 时被破坏

c++ - 在 C++ 中使用 C 头文件时避免全局变量/方法名称冲突

c# - 从插件访问 C# 中的第三方命名空间

php - 获取所有 WordPress 侧边栏

c - 主代码中 Global 上的 volatile 限定符,但 ISR 中没有

javascript - 当 readonly 为 true 时触发 TextBox 的 onchange 事件

javascript - Google Maps API - 在从 ajax 页面加载新数据之前清除标记、多段线

PHP 命名空间混淆 - 关键字 v 常量