---
# System prepended metadata

title: JavaScript中undefined 與 null 的差異

---

# JavaScript中undefined 與 null 的差異
:book: undefined表示變量已經聲明但尚未賦值，其值為**undefined**、類型為**undefined**
任何變量均可通過設置值為 **undefined** 進行清空。其類型也將是 **undefined**。

```javascript=
let test;
alert(test); //輸出 undefined
alert(typeof test); //輸出類型 undefined
let ppl = undefined;//值是undefined，類型是undefined
```
:book: null 是一個賦值，是用來給開發者來宣告”空值”的，其類型為**物件(object)** ，它被看做不存在的事物，
```javascript=
let test = null;
alert(test); //輸出 null
alert(typeof test); //輸出類型 object
```
## 兩者差異
Undefined 與 null 的值相等，但類型不相等：
```javascript=
typeof undefined              // undefined
typeof null                   // object
null === undefined            // false
null == undefined             // true
```
### :toilet:利用網友提供的圖解法來解釋 
![](https://i.imgur.com/j5F2sqD.png)
Non-zero value : 非零的數值，值(衛生紙)存在
0 : 即為空值 ""，類型是 "string"
null : 有定義一個東西，但是內容為零
undefined : 未定義是甚麼東西

## 比一比



|      | 基本輸出|string | number | boolean|
| -------- | -------- | -------- |---|---|
| undefined | undefined 類型:nudefined | undefined|NaN|false|
|  null  |  null 類型:object |  null  |0 |false|

## 參考資料
> [JavaScript 数据类型](https://www.w3school.com.cn/js/js_datatypes.asp)
> [What is the difference between null and undefined in JavaScript?](https://stackoverflow.com/questions/5076944/what-is-the-difference-between-null-and-undefined-in-javascript)