題目大概是這樣的:
function outer(){
return inner;
var inner = "a";
function inner(){};
inner = 9;
}
alert(typeof outer());
當時的回答是結果是——function (回來測試結果也是一樣)
本來的想法是,inner 在outer 執行的過程中,下面有一個函數聲明,而函數聲明會提升,也就是 JS 解析器會率先讀取函數聲明,如果不是聲明函數而是定義一個變量,那結果就會是 undefined。
問題是,經過面試官的百般拷問,我就猶豫了。雖然結果是正確的,但是不知道自己這樣理解對不對,問面試官,結果是無可奉告……雖然已經被刷,但還是在糾結這個問題。
javascript 是解釋性語言,也就是一行行解釋執行,那爲什麼會先讀取函數聲明?是否在javascript中有存在預編譯呢?
求解答!!!