js中的“==”雙等運算符問題

js中的“==”

  • 首先把javascript中的數據類型分成兩組:
    1.String、Number、Boolean和Object(有);
    2.Undefined和Null(無);
    3.1與2之間的比較都爲false;
    4.Undefined和Null之間的比較爲true;
    5.NaN 不等於 NaN,NaN和任何值都不相等;
  • 其次,當同組數據類型相比較的時候,首先將兩邊的數據都轉化成number類型;
    • 除了牢記兩大分類外,還需要記住那些內置對象的toString()和valueOf()方法的規則。
    • 基本數據類型之間,直接調用Number;
    • 基本數據類型和引用數據類型:將引用數據類型轉化爲基本數據類型;
      • 先調用比較對象的valueof方法;
      • 再調用比較對象的tostring方法;
      • 如果是Date類型,則以上兩步是反過來的;
    • parseInt(value)/parseFloat(value)
      • 轉換情況
        • 字符串->只要最高位是數字則會轉換成數值;否則轉換成NaN
        • 其它->NaN
    • Number()
      • 轉換情況
        • 就是把字符串兩邊的空白字符去掉,然後把兩邊的引號去掉,看它能否組成一個合法的數字。
        • 如果是,轉化結果就是這個數字;否則,結果是NaN。
        • 當然也有例外,比如空白字符串轉化爲數字的結果是0。
    • toString
      • 當對象需要轉換爲字符串時,會調用它的toString()方法.。
      • 默認情況下,每個對象都會從Object上繼承到toString()方法,
      • 如果這個方法沒有被這個對象自身或者更接近的上層原型上的同名方法覆蓋(遮蔽),則調用該對象的toString()方法時會返回”[object type]”,這裏的字符串type表示了一個對象類型;
    • valueOf
      • JavaScript 調用 valueOf() 方法用來把對象轉換成原始類型的值(數值、字符串和布爾值)。
      • 你很少需要自己調用此函數; JavaScript 會自動調用此函數當需要轉換成一個原始值時。
      • 默認情況下, valueOf() 會被每個對象Object繼承。每一個內置對象都會覆蓋這個方法爲了返回一個合理的值,如果對象沒有原始值,valueOf() 就會返回對象自己;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章