首页 > 全局变量 变undefined,JS定义先后顺序谁帮忙理一下?

全局变量 变undefined,JS定义先后顺序谁帮忙理一下?

var a = 3;
function box(){
    console.log(a);
    var a = 5;
}
box();

输出:undefined 3
这个很不理解。。。。


Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
function里面的var a执行前就有了,但是没赋值,所以就undefined了

var a = 3;
function box(){
    console.log(window.a);
     var a = 5;
}

这样就能调到全局的了


`function box(){
    console.log(a);
    var a = 5;
}`

其实就是

   `function box(){
        var a; //这边就覆盖了 全局中 定义的var a
        console.log(a);
        a = 5;
    }`

其实就是个 Hoisting

var a = 3;
function box(){

var a;
console.log(a);
a = 5;

}
box();
JavaScript中的变量提升(Hoisting)。在JS中,就是把定义在后面的东东(变量或函数)提升到前面中定义。 要是还不明白的话你百度一下“变量提升”会对你有帮助。

【热门文章】
【热门文章】