javascript隐式全局变量

javascript隐式全局变量,javascript,variables,global,implicit,Javascript,Variables,Global,Implicit,我在firefox控制台上尝试了这段代码,它抛出了一个ReferenceError: var func = function (){ bim = "implicit global"; }; alert(bim); ReferenceError: bim is not defined 历史上,如果在javascript中设置变量而不声明它(使用“var”关键字),则该变量将在最外层的词典环境(即:浏览器上的窗口对象)中定义。 那么为什么我不能从函数外部访问变量呢?我过去能做到这一点。我知道这

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

var func = function (){
  bim = "implicit global";
};
alert(bim);
ReferenceError: bim is not defined
历史上,如果在javascript中设置变量而不声明它(使用“var”关键字),则该变量将在最外层的词典环境(即:浏览器上的窗口对象)中定义。 那么为什么我不能从函数外部访问变量呢?我过去能做到这一点。我知道这不是最好的做法,但我想知道是什么改变了。我在ES6上读到“let”和“const”,但这是否意味着隐式全局变量不再存在?。我没有使用“严格模式”,只是直接在控制台上键入


提前谢谢

出现此错误的原因是您尚未执行该函数,正确的写入方法是:

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

func();
alert(bim);

您没有运行该函数。您需要执行该函数,然后该函数将在全局范围内。在这种特定情况下,更准确的错误消息是“bim未定义…尚未”,感谢您的回复!我知道我错过了一些明显的东西;我对javascript有点生疏了。我会更经常地回去写JS。