一道面試題的分析

看風景就發表於2018-10-28

題目:

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不是函式

相關文章