第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一些怪癖的類型轉(zhuǎn)換

一些怪癖的類型轉(zhuǎn)換

白衣染霜花 2019-01-30 16:14:12
收集了一些比較怪的類型轉(zhuǎn)換,我不懂原因,大家討論討論這是為什么?[] == ![]         // true'1' == true       // true'2' == true       // false'3' == true       // falsenull >= 0         // true{} + 1            // 1{var a = 10} + 1  // 1{} + {}           // "[object Object][object Object]"+[]               // 0{} + []           // 0[1,2]+ [3,4]      // "1,23,4"+[2]              // 2[2]+1             //"21"[2] + (-1)        // "2-1"null特殊情況+null        // 0null == 0    // falsenull > 0     // falsenull < 0     // false!!null         // falsenull == false  // falsenull == true   // false
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

1. 字符串與數(shù)字之間的相等比較,此時 字符串會被強制轉(zhuǎn)換為數(shù)字
2. 其他類型和布爾值類型之間的相等比較, 布爾值會被強制轉(zhuǎn)換為數(shù)字, true轉(zhuǎn)為1,false 轉(zhuǎn)為0
3. null 和undefined之間的相等比較, null == undefined 返回true
4. 對象和非對象之間的相等比較, 對象需要進行ToPrimitive抽象操作(如toString(), valueOf())

根據(jù)上面的四條規(guī)律,來理解下面幾題:

  1. [] == ![] 相當(dāng)于 [] == false 相當(dāng)于 '' == false 相等于 '' == 0 相當(dāng)于 0 == 0 因此結(jié)果為true

  2. '1' == true 相當(dāng)于 '1' == 1 相當(dāng)于 1==1 因此結(jié)果為true

  3. '2' == true 相當(dāng)于 '2' == 1 相當(dāng)于 2 ==1 因此結(jié)果為false

  4. '3' == true 相當(dāng)于 '3' == 1 相當(dāng)于 3 ==1 因此結(jié)果為false

根據(jù)規(guī)范 a<=b 會被當(dāng)做 b < a,然后將結(jié)果反轉(zhuǎn),因此

  1. null >= 0 可以理解為 !(null < 0)。 因為 null < 0 為false, 所以 null >=0 結(jié)果為true

使用+操作符時,如果其中一個操作符是對象,那么會先調(diào)用valueOf()方法,如果該方法返回基本類型值,就不再調(diào)用toString()方法。否則就調(diào)用toString()方法(有個例外,Date 的實例對象總是先調(diào)用toString,再調(diào)用valueOf)。
數(shù)組的valueOf()得不到基本類型值,所以數(shù)組會調(diào)用toString()方法。

  1. {} + 1 的前面的{}是個空的代碼塊, 如果加上換車鍵 或許更好理解了。{} 回車 +1。 +1結(jié)果返回1了。

  2. {var a = 10} + 1 道理跟上面一下,前面的{}是個代碼塊,只是后面沒加回車鍵。+1結(jié)果返回1.

  3. {} + {} 是兩個空對象相加, 分為轉(zhuǎn)為字符串({}).toString(),再相加。結(jié)果為"object Object"

  4. +[] 相當(dāng)于 Number([]), 結(jié)果為0

  5. {} + [] 這里{}依舊是空代碼塊,因此返回+[]的結(jié)果,也就是0

  6. [1,2]+ [3,4] [1,2]轉(zhuǎn)為字符串'1,2' [3,4]轉(zhuǎn)為字符串'3,4' , 因此結(jié)果為 "1,23,4"

  7. +[2] 相當(dāng)于 +'2' 相當(dāng)于 Number('2')因此,結(jié)果為2

  8. [2]+1 相當(dāng)于 '2' +1 因此,結(jié)果為'21'

  9. [2] + (-1) 相當(dāng)于 '2'+(-1) 因此結(jié)果為'2-1'


查看完整回答
反對 回復(fù) 2019-01-30
  • 1 回答
  • 0 關(guān)注
  • 546 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號