JS预解析全局变量问题

JS预解析问题

var a = 1
function fn(){
    a = 2 
    console.log(a); 
}
fn()
console.log(a);
            
// 分解
            
var a
function fn(){
    a = 2
    console.log(a); 
}
a = 1 
fn()
console.log(a);

理论上按照分解完的顺序走,第一个a=2,但第二个a得出来的结果也是2。
不应该是a=2就是全局变量,再往下a=1覆盖掉2吗?

你这样再试一下就行了


var a = 1
function fn(){
    a = 2 
    console.log(a); 
}
fn()
console.log(a);
// 分解
var a
function fn(){
    a = 2
    console.log(a); 
}

fn()
a = 1 
console.log(a);

因为你在 a=1下面执行了一次fn()