js中undefined和null的區別

千鋒IT教育發表於2023-03-10

● 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 就是有值, 有一個空值, 一般會被當做這裡有一個空物件, 也叫作空指標

● 舉個例子 : 我們們以數字為例

js中undefined和null的區別

這就是有一個具體的數字, 100 200 什麼的

js中undefined和null的區別

這就是 0, 用完了, 沒有了

js中undefined和null的區別

這就是 null, 有一個空架子, 其他的什麼都沒有

js中undefined和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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章