js中undefined和null的區別
● JavaScript 真是一個特殊的語言, 其他語言都只有一個表示 "無" 的值, 比如 Java 語言用的是 null, C 語言用的是 NULL, Python 語言用的是 None, Ruby 語言用的是 nil. 只有 JS 裡面表示 "空" 的有兩個, 一個是 undefined, 一個是 null
● 很多小朋友在剛開始學習的時候, 都會有一個疑問, 就是 undefined 和 null 二者之間有什麼區別呢 ? 我什麼時候該用什麼呢 ?
● 接下來, 我們們就來好好聊一聊
JS的基本資料型別
● 在 JS 內, 有幾個基本資料型別
● ES5
○ Number 數值
○ String 字串
○ Boolean 布林
○ Undefined 空
○ Null 空
● ES6
○ Symbel 唯-一值
● undefined 和 null 其實就是 JS 中的基本資料型別, 空型別
○ 從這個角度來看, 他們兩個是一樣的, 都表示 空 的意思
○ 並且在進行資料型別比較的時候, 某些情況下也是一樣的
console.log(undefined == null) // true
兩者的區別
● 兩者的區別還是在於含義
● 之前我們說過, 所有的資料在計算機都是以二進位制形式儲存的
● 那麼這兩個資料也是會按照二進位制形式儲存的
○ undefined 因為表示的是 "沒有", 所以沒得轉換, 啥也沒有
○ null 因為表示的是 "空", 其實是有內容, 只不過有一個空內容, 儲存的是 0000 0000 ...
● 那麼反饋到我們的程式碼內
○ undefined 就是沒有值, 或者說未被賦值
○ null 就是有值, 有一個空值, 一般會被當做這裡有一個空物件, 也叫作空指標
● 舉個例子 : 我們們以數字為例
○
這就是有一個具體的數字, 100 200 什麼的
○
這就是 0, 用完了, 沒有了
○
這就是 null, 有一個空架子, 其他的什麼都沒有
○
這就是 undefined, 連個架子都沒有
● 根據上面的例子
○ undefined, 你什麼都不需要做, 只要什麼也不賦值就是 undefined
○ null, 需要你賦值, 直接賦值為一個 null, 也就是你要安裝一個空架子
兩者對比
1. 資料型別不同, 但是值相同
○ 兩個資料分別屬於 Undefined 型別和 Null 型別
○ 但是表示的值都是空
○ 所以在比較的時候, 我們要注意
console.log(undefined == null) // true, 不涉及資料型別比較console.log(undefined === null) // false, 涉及資料型別比較
2. 資料型別轉換成為數值型別的時候結果不一樣
○ null 表示空, 儲存的時候也是一大堆 0, 所以轉換為數值是 0
○ undefined 表示沒有, 什麼都沒有內容轉換為數值以後是 NaN
console.log(Number(null)) // 0console.log(Number(undefined)) // NaN
3. 使用場景不同
● null
○ 在我們需要一個空值或者置空變數的時候手動賦值
○ 原型鏈的終點位置, 也就是 Object.prototype.__proto__ 是 null
● undefined
○ 在變數宣告未賦值的時候就是 undefined
○ 函式只有形參沒有實參的時候, 這個形參的值也是 undefined
○ 如果一個函式沒有設定返回值, 那麼這個函式的返回值也是 undefined
總結
● 總之, 我們就記住一個原則
○ 當你什麼也沒有做過的時候, 那麼就是 undefined
○ 只有你想白乾活的時候, 那麼你就手動給他寫成 null 就好了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023145/viewspace-2939161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js中null和undefined的區別JSNullUndefined
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- javascrit中undefined和null的區別JavaUndefinedNull
- null 和 undefined 的區別NullUndefined
- null 和 undefined 的區別!NullUndefined
- undefined 和 null 區別?UndefinedNull
- null和undefined區別NullUndefined
- JavaScript中的“undefined、null”區別?JavaScriptUndefinedNull
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- JS 應用篇(一):Undefined與Null的區別JSUndefinedNull
- JavaScript undefined與null區別JavaScriptUndefinedNull
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- JavaScript 05筆記(null、undefined、NaN的區別)JavaScript筆記NullUndefinedNaN
- null 和 undefinedNullUndefined
- JS中判斷null、undefined與NaN的方法JSNullUndefinedNaN
- JavaScript基本資料型別之undefined和nullJavaScript資料型別UndefinedNull
- Python中none和null的區別詳解!PythonNoneNull
- Js中for in 和for of的區別JS
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- Object.create(null) 和 {} 的區別ObjectNull
- JS中的!=、== 、!==、=== 的用法和區別JS
- Js中concat和push的區別JS
- js中!和!!的區別與用法JS
- js中AMD和CMD的區別JS
- 分享一個在js中判斷資料是undefined,NaN,null,的技巧JSUndefinedNaNNull
- undefined與null與?. ??UndefinedNull
- js中var和let的快速區別JS
- js中==和===的區別以及總結JS
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- NULL在oracle和mysql索引上的區別NullOracleMySql索引
- Vue.js中 computed 和 methods 的區別Vue.js
- JS陣列中(for...in)和(for...of)的區別JS陣列
- [Typescript] Accept Anything Except Null or UndefinedTypeScriptNullUndefined
- undefined會變為null嗎?UndefinedNull
- Object.create(null) 和 {} 區別是什麼ObjectNull
- 隨筆:MySQL中'' ' ' NULL在Innodb儲存的區別MySqlNull
- 在js中attribute和property的區別是什麼?JS
- js中call,apply和bind方法的區別和使用場景JSAPP