undefined 介紹

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
2
var price = 30;
console.log(price);

無法預期變數的值

🎃 有時候,當我「無法預期變數的值」,就可以「先把變數名稱寫好」,但是「暫時不賦予變數任何的值」

  • 在 all.js 裡面只寫了var price;
  • 再利用console.log(price);去看
  • 在 Console 就「會回傳 undefined」

JS:

1
2
var price;
console.log(price);

只寫var price;,為什麼會回傳「undefined」呢?

JS:

1
2
var price;
console.log(price);

原因為:

  • 瀏覽器偵測到「我新增了一個變數,名稱叫做price

🎃 但是,我還沒有賦予price任何的「值」(數字、字串或是布林值)

🎃 所以,瀏覽器只好先回傳「undefined」這個值

後續再賦予變數一個值

在上面的範例中,因為「無法預期變數的值」,所以我「先把變數名稱寫好」,但是「暫時不賦予變數任何的值」

🎃 後續當我知道變數的值時,就可以賦予上去了

JS:

1
2
3
4
5
var price; //先把變數名稱寫好

price = 50; //後續再賦予變數一個值

console.log(price);

賦予變數的值 = 50 之後,Console 就不會再回傳「undefined」了