題目:
console.log(a); var a=1; console.log(a); function a(){console.log(2);} console.log(a); var a=3; console.log(a); function a(){console.log(4);} console.log(a); a();
執行結果:
分析:
題目中有多個變數宣告和函式宣告,都會提升,而函式的優先順序高於變數,兩個函式宣告,後面的高於前面的,所以第一個a是
f a(){console.log(4)}
var a = 1,執行到此,a被賦值為1,第二,第三個a都是1,中間的函式宣告已經提升過,在此處不會再執行,沒有任何影響。
var a = 3,同理,後面的第四,第五個a都是3。
由於a被賦值為3,第六個a(),已經無法執行,報錯,a不是函式