可能重複:
Why does second function declaration win even though I return before it?JS如何使用其代碼?
我想明白了一兩件事。在實現任何函數或輸出之前,JS是否首先通過代碼來初始化變量,函數等?我的意思是它看起來像遍歷代碼兩次 - 一次初始化,只有第二次它開始做某事。對?
我有這樣的代碼:
alert((function f() {
function f() { return 1 }
return f();
function f() { return 2 }
})());
輸出爲2。所以,如果它開始從第一次正確的實現代碼,輸出將爲1.但是,就輸出爲二首檢查代碼,然後纔開始使用它。我對嗎?
「* var和function都被首先處理。」 - 這應該在更詳細的解釋中進行解釋... –