null 和 undefined 的區別
一、概念
undefined 表示未定義,就是應該有值但是還沒有賦值,連null的值都沒有賦予
null 代表空值,空引用。
二、區別
1. null 和 undefined 雖然值的結果是相等的,但是其所代表的語義是完全不一樣的(==是相等的)。
undefined 代表了某個變數完全不存在,在記憶體中完全能不存在這個識別符號所指向的地址;
null 代表了記憶體中是存在這個變數的,只是我在某些情況下需要把這個變數原本的值給覆蓋了,將它設定為一個空。
2. null 轉為數值是 0 ; undefined 轉為數值是 NAN(not a number)。
3. null 透過 typeof 判斷型別的時候結果的輸出是 object ; 而 undefined 的型別是 undefined 。
那麼為什麼 typeof null 是 object ?
null 和 undefined 都是js語言的基礎資料型別, 都是原始值型別,但是 typeof null 是 object ,是因為不同的物件在底層都表現為二進位制,在 JavaScript 中二進位制前三位都為 0 的話會被判斷為 object 型別,null 的二進位制全部都為 0 ,前三位自然也是 0 ,所以執行 typeof 值會返回 object 。
4. null 是 js 語言的關鍵字,是不允許使用者用來作為識別符號宣告變數的,但是 undefined 可以,undefined 不是關鍵字。
在 node 環境中,我們宣告的 undefined 會將原本的 undefined 覆蓋的,但是在瀏覽器環境中不會,是因為瀏覽器中的 undefined 是直接被使用 Object.defineProperty 定義在了全域性物件 window 上,預設就已經被配置成為了:值不可修改並且不可以被重新進行配置。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29187948/viewspace-2950973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- null 和 undefined 的區別!NullUndefined
- undefined 和 null 區別?UndefinedNull
- null和undefined區別NullUndefined
- javascrit中undefined和null的區別JavaUndefinedNull
- js中null和undefined的區別JSNullUndefined
- js中undefined和null的區別JSUndefinedNull
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- undefined與null的區別UndefinedNull
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- JavaScript undefined與null區別JavaScriptUndefinedNull
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN
- undefined和nullUndefinedNull
- null 和 undefinedNullUndefined
- JS 應用篇(一):Undefined與Null的區別JSUndefinedNull
- MySQL中is not null和!=null和<>null的區別MySqlNull
- JavaScript基本資料型別之undefined和nullJavaScript資料型別UndefinedNull
- NULL和0的區別Null
- null == undefined ?NullUndefined
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- Object.create(null) 和 {} 的區別ObjectNull
- /dev/zero和/dev/null的區別devNull
- 探索javascript中null和undefined的深淵JavaScriptNullUndefined
- undefined與null與?. ??UndefinedNull
- Java中空串和null串的區別JavaNull
- Null 與 “” 的區別Null
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- Objective-c nil, Nil, NULL和NSNull的區別ObjectNull
- String str=null; 和String str=""的區別Null
- PHP中empty、isset和is_null的使用區別PHPNull
- LOB欄位EMPTY_LOB和NULL的區別Null
- Python中none和null的區別詳解!PythonNoneNull
- undefined會變為null嗎?UndefinedNull
- Object.create(null) 和 {} 區別是什麼ObjectNull
- JavaScript基本概念整理(null、undefined)JavaScriptNullUndefined
- 別名的使用和nullNull