iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

我的日常學習雜記與筆記整理系列 第 15

Day - 15 JavaScript 的 null 與 undefined

  • 分享至 

  • xImage
  •  

JavaScript 的 null 與 undefined

null

在 JavaScript 中 ,null 是一個 keyword,當使用 typeof 運算子用console.log去印出null的型態時,會是字串 "object"

console.log(typeof null);

也就是說 null 它代表著 沒有存在值 (the absence of a value) 的物件。

null 可以用在當變數的資料型別如 數字、字串或物件中沒有值的意思。在其他的程式語言中也有和 JavaScript 同樣沒有值的 nullnil

undefined

undefined 是 JavaScript 預先定義的全域變數,用來代表尚未定義的值,若宣告變數一開始的時候沒有直接指定值(const 除外),那麼它的型態就會是undefined

const 常數宣告一開始必須指定值給它,否則執行時就會出現錯誤訊息 SyntaxError: Missing initializer in const declaration

比如下方的幾個例子都會是 undefined 的情況

  let a;
  console.log(a);  // undefined

  console.log(typeof undefined); // undefined

  console.log(print());  // 印出 123, undefined, undefined
  // 除了 print() 執行的印出123之外,也會在後面印出兩次 undefined, 因為在呼叫 print 方法的時候,並沒有相對應的引數傳入作為參數給它,加上一開始我就沒有在print() 方法中指定回傳值(return value),所以它會回傳 undefined 代表沒有回傳值的意思。


  function print(arg){
    console.log(123);   // 印出 123
    console.log(arg);   // 印出 undefined
  }

當使用 相等性的運算子 == 比較 nullundefined 時,它會把兩者視為相同,因為兩者都是代表著falsy value,也是 布林值(Boolean) 判斷中的 false。

  console.log(null == undefined);  // ture

但在使用嚴格相等性運算子=== 比較時,兩者就會不相同。

  console.log(null === undefined); // false

事實上 nullundefined,兩者代表的意義是不相同的,undefined 可以用來代表非預期的,或是錯誤的沒有值,而 null 則用來明確表示 預期中的沒有值。

當需要將值指定給變數或物件的特性,或是要傳值給 function(方法),多半是用 null


參考資料:


上一篇
Day - 14 Array 陣列 - 06. 陣列方法 - map, filter, reduce
下一篇
Day - 16 JavaScript 的分號 ; (Semicolons)
系列文
我的日常學習雜記與筆記整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言