hoisting、var 觀念

為什麼變數一定要在「前面」先宣告,後面才吃的到變數的值呢?

🎃 「變數」是「從上到下」去執行程式碼

JS:

1
2
3
console.log(a);
var a = 3;
console.log(a);

🍋 第一行console.log(a);:還沒有吃到var a = 3;,因此是顯示「undefined」

🍋 第三行console.log(a);:已經吃到var a = 3;,因此是顯示「3」

🎃 「function」會「自動被放到程式碼的最上方」,這就是「hoisting」

JS:

1
2
3
4
5
count();

function count(){
console.log('Hello!');
}

在這段程式碼中,雖然是「先寫count();」,然後才宣告function

🎃 但是,因為 function 是採用「hoisting」的執行方式,也就是:載入 JavaScript 後,會自動「把 function 放到程式碼的最上方」去做執行

  • 因為它覺得 function 是要被「優先處理的」

因此,就算是「先執行 function,後面才宣告 function」,還是會跑出 function 的結果