javascript - JavaScript 中的全局变量是什么?

标签 javascript global-variables

我来自 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/

相关文章:

java : accessing parent variable in multi threaded programe

c++ - 将所有常用的全局变量移至一个头文件以减少#include 的数量是否是一种好习惯?

javascript - react .js : events instead of passing handler in props

java - 动态饼图

c++ - 创建全局 C++ 对象

c++ - 全局指针是否初始化为零?

c - 堆栈和全局变量

javascript - 图片路径问题

javascript - 使用 Javascript 过滤 xml 文件

javascript - 需要帮助编写一个接受 3 个数组并按升序返回重复元素的字符串的函数