強類型轉換

字符串與數字的隱式強類型轉換

ES5規範11.6.1節,如果某操作數是字符串或者能夠通過以下步驟轉換爲字符串的話,+將進行拼接操作。
如果其中一個操作數爲對象(包括數組),則先調用ToPrimitive抽象操作,該操作在調用[[DefaultValue]],以數字作爲上下文。

  • ToPrimitive
    先調用valueOf(),再Tostring轉換爲字符串
  • String()
    直接調用Tostring
操作 操作數類型 行爲
+ ‘12’ + 12 string+number =>number轉換爲string
+ 數組 valueOf無法得到基本類型,於是調用toString()

||和&&

ES5規範11.11:
&&和||運算符的返回值並不一定是布爾類型,而是兩個操作數其中一個的值


==寬鬆相等的強類型轉換

  • 字符串和數字比較

    ES5規範11.9.3.4-5規定
    數字和字符串比較,轉換爲數字

  • 其它類型和布爾類型比較

    11.9.3.6-7規定
    布爾類型會先轉換爲數字即ToNumber(x)

  • null == undefined
  • 對象和非對象比較

    對象調用ToPrimitive操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章