辨析JavaScript中的Undefined類型與null類型

字號(hào):


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