# undefined與null的差別 +++ title = "undefined與null的差別" description = "undefined 是未定義的青春年少, null則是曾經滄海難為水" author = "POPEYE" date = "2021-12-11" tags = ["JavaScript", "undefined","null"] categories = ["JavaScript"] [[images]] src = "img/2021/undefined.jpg" alt = "undefined 與 null 的差別" +++  undefined是基本型別之一,指的是「變數目前還沒有給值」,如果宣告一個變數,卻沒有初始化(沒有給值),那變數的值就預設為undefined。 ```javascript= let a; console.log(a)//undefined Number(undefined); //NaN console.log(1+undefined); //NaN typeof(undefined); //'undefined' Boolean(undefined);//false,在求布林值時會轉成false ``` null也是基本型別之一,指的是「不管前500年,還是後500年有沒有值,總之現在沒有值」。 在指定DOM元素時,如果那個DOM元素不存在,也會回傳null。 ```javascript= let b = null; console.log(b);//null Number(null) //0 console.log(1+null); //0,1 + 0 =1 typeof(null) //'object' Boolean(null) //false,在求布林值時會轉成false ``` 但是要注意的是: ```javascript null == undefined; //true,因為在JS中用布林去查詢null跟undefined都是falsy null === undefined; //false ``` 最後的重點整理: ### undefined和null相似處: * 都没有屬性和方法,也不能額外添加屬性方法 * 皆為Falsy Value(Boolean判斷時為false) * 皆為原始型別(Primitive Type) ### undefined和null相異之處: * `typeof null` 會回傳 object ; `typeof undefined` 會回傳 undefined。 * 當要取用一個物件的屬性或陣列的元素時,若該屬性/元素不存在,回傳undefined。或原本一個函數需要傳入參數,但是調用函數時卻沒有傳入參數,則回傳值將會是undefined。 * 在做DOM元素操作時,若要獲取的DOM元素不存在,則會回傳null。 參考資料 * [undefined 和 null 的差別](https://www.jstips.co/zh_tw/javascript/differences-between-undefined-and-null/) * [Javascript中undefined和null的差異](https://snh90100.medium.com/javascript%E4%B8%ADundefined%E5%92%8Cnull%E7%9A%84%E5%B7%AE%E5%88%A5-1f48e9be5e02)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up