我来自 C# Class()、字段、属性、命名空间……世界。我刚刚开始使用 javascript。到目前为止,我一直做得很好。然而,我的一位 friend 在查看我的代码时问我为什么要这样做。
function Position (x, y) {
this.X = x;
this.Y = y;
}
friend :“你刚刚超越了位置……” 我:“什么职位?” friend :“可以是浏览器正在使用的任何东西。” 我:“我只是在运行这个脚本——它运行得很好” friend :“直到它不起作用。”
好吧……什么?原来 Position 是Global ..但是在哪里以及在多大程度上?我的 friend 让它听起来像整个浏览器的全局。所以我的问题是;
javascript 是全局的,对整个浏览器来说是全局的吗? > 只有 window ? > 仅选项卡?? > 它能走多远??
最佳答案
它对当前窗口是全局的。不要担心其他选项卡、窗口或 iframe。话虽如此,我认为他试图说明的是 JavaScript 中的一个很好的原则,即
Don't clutter up the global namespace
意思是无论你做什么全局化都不应该太多,而且应该是非常有意识的。
JavaScript 具有函数作用域(不是 block 作用域),因此解决此问题的一种简单方法是将所有内容包装在立即调用的函数表达式中。
;(function () {
function Position (x, y){
this.X = x;
this.Y = y;
}
// use Position here
}());
关于javascript - JavaScript 中的全局变量是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093322/