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/