JavaScript 的 undefined 到底是什麼呢?
undefined 定義
🎃 「undefined」是一個「空值」
🎃 當「變數已經被命名」,但「還沒有賦予變數一個值」時,預設就是「undefined」的狀態
在 Console 回傳 undefined
我在開發者工具的 Console 宣告一個變數var price = 30;
,按下 enter 後,為什麼會回傳「undefined」呢?
原因為:
在 Chrome 運行 JavaScript 時,針對這行程式碼「var price = 30;
」,會依序做兩件事情:
1. 第一件事:先把變數命名起來
1 | var price; |
🎃 這時,Chrome 正在「開啟變數的位置」(把變數存在記憶體上面),因為目前的變數只有「名稱」,還沒有「值」,所以,Console 就會回傳「undefined」
2. 第二件事:再賦予price
一個「值 = 30」
1 | price = 30; |
🎃 這時,再次呼叫變數price
,因為變數已經被賦予「值 = 30」了,因此,就會回傳「30」
但是,如果我是在 all.js 裡面宣告var price = 30;
,再利用console.log(price);
去看,在 Console 就「不會回傳 undefined」
JS:
1 | var price = 30; |
無法預期變數的值
🎃 有時候,當我「無法預期變數的值」,就可以「先把變數名稱寫好」,但是「暫時不賦予變數任何的值」
- 在 all.js 裡面只寫了
var price;
- 再利用
console.log(price);
去看 - 在 Console 就「會回傳 undefined」
JS:
1 | var price; |
只寫var price;
,為什麼會回傳「undefined」呢?
JS:
1 | var price; |
原因為:
- 瀏覽器偵測到「我新增了一個變數,名稱叫做
price
」
🎃 但是,我還沒有賦予price
任何的「值」(數字、字串或是布林值)
🎃 所以,瀏覽器只好先回傳「undefined」這個值
後續再賦予變數一個值
在上面的範例中,因為「無法預期變數的值」,所以我「先把變數名稱寫好」,但是「暫時不賦予變數任何的值」
🎃 後續當我知道變數的值時,就可以賦予上去了
JS:
1 | var price; //先把變數名稱寫好 |
賦予變數的值 = 50 之後,Console 就不會再回傳「undefined」了