【问题标题】:javascript implicit global variablesjavascript 隐式全局变量
【发布时间】:2023-03-04 05:50:01
【问题描述】:

我在 firefox 控制台上尝试了这段代码,它抛出了 ReferenceError:

var func = function (){
  bim = "implicit global";
};
alert(bim);
ReferenceError: bim is not defined

从历史上看,如果你设置一个变量而不声明它(使用“var”关键字),那么在 javascript 中,该变量将被定义在最外层的 LexicalEnvironment 中(即:浏览器上的窗口对象)。 那么为什么我不能从函数外部访问变量呢?我曾经能够做到这一点。我知道这不是最佳做法,但我想知道发生了什么变化。我在 ES6 上读到了“let”和“const”,但这是否意味着隐式全局变量不再存在?我没有使用“严格模式”,只是直接在控制台上输入。

提前致谢!!

【问题讨论】:

  • 你没有运行这个函数。
  • 您需要执行该函数,然后它才会在全局范围内。
  • 在这种特定情况下更准确的错误消息是“bim is not defined... yet”
  • 感谢您的所有回复!我知道我遗漏了一些明显的东西;我对我的 javascript 有点生疏了。我会经常回去写 JS。

标签: javascript variables global implicit


【解决方案1】:

你得到这个错误的原因是你没有执行这个函数,正确的写法是:

var func = function(){
    bim = "implicit global";
};

func();
alert(bim);

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2013-03-05
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多