# 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.