為什麼變數一定要在「前面」先宣告,後面才吃的到變數的值呢?
🎃 「變數」是「從上到下」去執行程式碼
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 的結果