「全域變數、區域變數」的差別在哪呢?
🎃 全域變數:在 all.js 直接宣告變數(變數“沒有”包在 function 裡面)
🍋 全域變數:在 all.js 直接宣告變數(變數“沒有”包在 function 裡面),像是這樣
JS:
1 | // 全域變數 |
Console 就會顯示變數total
的值 = 30
在 Console 輸入window
,就可以看到變數total
是「有被記錄起來」的
🎃 區域變數:在 function 裡面宣告變數
🍋 區域變數:在「function 裡面」宣告變數,像是這樣
JS:
1 | function count(oneNum,twoNum){ |
因此,在「function 外面」執行console.log(total);
時,「變數total
」已經被銷毀了–> Console 就會顯示「total is not defined」
用「區域變數」的好處
「function 內、外」都撈出變數的值
在開發時,有時候會需要在「function 內、外」都撈出變數的值,該怎麼做呢?
作法如下:
🎃 在「function 外面」,先設定一個「全域變數」,只把「變數名稱」寫好,並且給它一個「空值」(也就是:不寫值)
🎃 在「function 裡面」,不需要再寫一次「var
」(不需要再設定“區域變數”),只是「給變數一個值」
‼️ 在「function 裡面」,「沒有var
」代表「沒有要在 function 裡面新增“區域變數”」,因此,它就會去外層找「全域變數」,並將變數值帶入「全域變數」
JS:
1 | // 全域變數 |
- 執行 function 後,在 Console 就會顯示:
- 🍋 「總數等於:80」–> 是 function 內的
console.log('總數等於:' + total);
- 🍋 「80」–> 是 function 外的
console.log(total);
- 🍋 「總數等於:80」–> 是 function 內的
再寫一次var
,會發生什麼事呢?
如果,在 function 內,針對同一個變數total
又再寫一次var
,就代表「在 function 的世界內,再新增一個“區域變數”」
JS:
1 | // 全域變數 |
執行 function 後,在 Console 就會顯示:
✅ 「總數等於:80」–> 是 function 內的console.log('總數等於:' + total);