Undefined與null都是js中的基本數(shù)據(jù)類型,然而正如它們的名字那樣,未初始化和空并不相同,下面我們就來詳細(xì)辨析JavaScript中的Undefined類型與null類型:
Undefined
表示變量已聲明,但未被初始化。需要注意的是當(dāng)使用typeof操作符判斷數(shù)據(jù)類型時,未被聲明的變量和未初始化的變量返回的值都為undefined
var message;
console.log(typeof message);//undefined
console.log(typeof age);//undefined
null:表示一個空對象指針
使用typeof操作符返回的值是'object',需要注意的是,undefined值是派生自null值的,因此ECMA-262規(guī)定對它們的相等性測試要返回true。
console.log(null == undefined);//true
undefined與null的區(qū)別
(1)undefined表示一個變量沒有被聲明,或者被聲明了但沒有被賦值
(2)null是一個表示“沒有值”的值
(3)Javascript將未賦值的變量默認(rèn)值設(shè)為undefined
(4)Javascript從來不會將變量設(shè)為null。它是用來讓程序員表明某個用var聲明的變量時沒有值的。
(5)undefined不是一個有效的JSON,而null是
(6)undefined的類型(typeof)是undefined,null的類型(typeof)是object.
PS:它們都是基本類型
他們都是falsy (Boolean(undefined) // false, Boolean(null) // false)
你可以這樣判斷一個變量是否是undefined
typeof variable === "undefined"
你可以這樣判斷一個變量是否是null
variable === null
雙等號比較時它們相等,但三等號比較時不相等
null == undefined // true
null === undefined // false