# 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:利用網友提供的圖解法來解釋

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)
{"metaMigratedAt":"2023-06-16T12:18:39.377Z","metaMigratedFrom":"Content","title":"JavaScript中undefined 與 null 的差異","breaks":true,"contributors":"[{\"id\":\"663fae2d-2bb5-4437-90b7-96f11a50e120\",\"add\":1375,\"del\":84}]"}