阿里巴巴Web前端面試的一道JS題目,求解答!!!

題目大概是這樣的:

function outer(){
    return inner;
    var inner = "a";
    function inner(){};
    inner = 9;
}
alert(typeof outer());

當時的回答是結果是——function (回來測試結果也是一樣)

本來的想法是,inner 在outer 執行的過程中,下面有一個函數聲明,而函數聲明會提升,也就是 JS 解析器會率先讀取函數聲明,如果不是聲明函數而是定義一個變量,那結果就會是 undefined。

問題是,經過面試官的百般拷問,我就猶豫了。雖然結果是正確的,但是不知道自己這樣理解對不對,問面試官,結果是無可奉告……雖然已經被刷,但還是在糾結這個問題。

javascript 是解釋性語言,也就是一行行解釋執行,那爲什麼會先讀取函數聲明?是否在javascript中有存在預編譯呢?

求解答!!!

問題是,經過面試官的百般拷問,我就猶豫了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章