1. 程式人生 > >js基礎面試高頻面點2:Javascript中undefined和not defined有什麽區別?

js基礎面試高頻面點2:Javascript中undefined和not defined有什麽區別?

eight 對象的引用 mage 正常的 意思 bool 布爾 rip comment

二、Javascript中undefined和not defined有什麽區別?

  一句話:udefined為變量正常的數據類型,不是報錯,而not defined是指變量沒有定義,是報錯。

  那麽,什麽是數據類型?js中數據類型有哪些?

  數據類型在數據結構中的定義是一組性質相同的值的集合以及定義在這個值集合上的一組操作的總稱

  js中變量的數據類型有:

    值類型(基本類型):字符串(String)、數字(Number)、布爾(Boolean)、對空(Null)、未定義(Undefined)、Symbol。

    引用數據類型:對象(Object)、數組(Array)、函數(Function)。

    技術分享圖片

    技術分享圖片

    這個結果說明:

    1、數組和對象的類型都是object。

    2、用typeof只能檢測出null為object。

    什麽意思呢?

    null是什麽東西?是值還是數據類型?什麽值的數據類型是null?null和undefine究竟有什麽千絲萬縷的聯系?

    在下認為:null可以是值,也可以是數據類型,null表示一個空對象的引用,對象的原型最終指向null。對於null的類型為object,這是js設計之初的歷史  bug,可參考:http://2ality.com/2013/10/typeof-null.html,而null和undefined的值是相等的,但類型不同,所以:

    alert(null == undefined); // true
    alert(null === undefined); // false
    

    補充:
    技術分享圖片
    

  

js基礎面試高頻面點2:Javascript中undefined和not defined有什麽區別?