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
- 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
- null 和 undefinedNullUndefined
- JS 應用篇(一):Undefined與Null的區別JSUndefinedNull
- JavaScript基本資料型別之undefined和nullJavaScript資料型別UndefinedNull
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- Object.create(null) 和 {} 的區別ObjectNull
- undefined與null與?. ??UndefinedNull
- Python中none和null的區別詳解!PythonNoneNull
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- [Typescript] Accept Anything Except Null or UndefinedTypeScriptNullUndefined
- undefined會變為null嗎?UndefinedNull
- Object.create(null) 和 {} 區別是什麼ObjectNull
- JavaScript基本概念整理(null、undefined)JavaScriptNullUndefined
- PHP7 ?? 與 ?: 的作用和區別(null合併運算子, null條件運算子)PHPNull
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- JS中判斷null、undefined與NaN的方法JSNullUndefinedNaN
- 你還不知道mysql中空值和null值的區別嗎?MySqlNull
- 來學習typescript 吧! --1基礎型別(string、number、 boolean、void 、Null、undefined )TypeScript型別BooleanNullUndefined
- 實習記錄day02:MySQL是有null和空的區別的MySqlNull
- 隨筆:MySQL中'' ' ' NULL在Innodb儲存的區別MySqlNull
- call和apply第一個引數為null/undefined,函式this指向全域性物件APPNullUndefined函式物件
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- VUE前端打包報錯:TypeError: Class extends value undefined is not a constructor or nullVue前端ErrorUndefinedStructNull
- ||和??的區別