[JavaScript] undefined 和 null的異同

🔍小範例大學問👊

1. 基本定義

  • undefined:未定義,比如變數無賦予值的話該變數預設就會是 undefined。
  • null:空值,是讓開發者用來宣告變數沒有值。

2. 型別測試

typeof null        // 'object'
typeof undefined   // 'undefined'

💬說明:null顯示的是型別是object(為什麼是物件?可以把他想成,回傳一個空對象來看);而undefined顯示的型別就是undefined。

3. Boolean值判斷

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

💬說明:雙等式時,null和undefined是true,但加上型別判斷的三等式時,理所當然出現了false。

💡 有趣小測試

let a = {
    myname:"peter",
    isHome:true
};

console.log(typeof null);//object
console.log(typeof a);//object

💬說明:null 和 a 都是物件型別,所以來計算看看。

console.log(null + "123");//null123
console.log(a + "123");//[object Object]123

a.age = 18;
console.log(a);//{myname: 'peter', isHome: true, age: 18}
console.log(a + "123");//[object Object]123

說明:很有趣的是,null雖然是物件,但自動轉型字串相加時,會以null做加法;而 a 物件會以[object Object]的形式做字串相加,不管屬性有幾項,a 仍然是呈現[object Object]。

📌總整理

undefined和null相似處
a.都没有屬性和方法,也不能額外添加屬性方法。
b.皆為Falsy Value(Boolean判斷時為false) MDN文檔說明
c.皆為原始型別(Primitive Type)

參考文章

Javascript中undefined和null的差異

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: