+
- 兩個(gè)操作數(shù)都是數(shù)值嗅定,就是數(shù)值操作
- 有一個(gè)操作數(shù)是字符串,就執(zhí)行字符串拼接
- 其他情況都先執(zhí)行String()方法進(jìn)行類(lèi)型轉(zhuǎn)換成String類(lèi)型吆寨,然后進(jìn)行字符串拼接
(注意:這里有個(gè)有趣的地方 console.log({} + [])打印 0臣樱, console.log([] + {})打印'[object Object]' 這里第一種是為什么呢, 因?yàn)閖s解析引擎會(huì)將{} 開(kāi)頭作為一個(gè)模塊解析托修,其實(shí)就是什么也沒(méi)有只執(zhí)行了 + []的操作)
>、<恒界、>=睦刃、<=
- 除了兩個(gè)操作數(shù)都是字符串的情況,其他都轉(zhuǎn)換成Number類(lèi)型比較大小
- 任何操作數(shù)與NaN進(jìn)行比較十酣,結(jié)果都是false
- 對(duì)于兩個(gè)操作數(shù)都是字符串涩拙,比較的是字符串的字符編碼
==际长、!=
- 強(qiáng)制類(lèi)型轉(zhuǎn)換,一般都是轉(zhuǎn)換為數(shù)值
- 這里判斷的相等只能說(shuō)明值相等(對(duì)于基本類(lèi)型)或引用相等(對(duì)于引用類(lèi)型)兴泥,并不能說(shuō)明類(lèi)型也一致工育。
- NaN和任何值都不相等
- 對(duì)象相等是指向同一對(duì)象才相等
- undefined == null 返回true,因?yàn)镋CMA262規(guī)定的
- 如果 x 或 y 中有一個(gè)為 NaN搓彻,則返回 false如绸;
- 如果 x 與 y 皆為 null 或 undefined 中的一種類(lèi)型,則返回 true(null == undefined // true)旭贬;否則返回 false(null == 0 // false)怔接;
- 如果 x,y 類(lèi)型不一致,且 x,y 為 String稀轨、Number扼脐、Boolean 中的某一類(lèi)型,則將 x,y 使用 toNumber 函數(shù)轉(zhuǎn)化為 Number 類(lèi)型再進(jìn)行比較奋刽;
- 如果 x瓦侮,y 中有一個(gè)為 Object,則首先使用 ToPrimitive 函數(shù)將其轉(zhuǎn)化為原始類(lèi)型佣谐,再進(jìn)行比較肚吏。
if語(yǔ)句、條件操作符 台谍、! 须喂、while語(yǔ)句
- 這種針對(duì)Boolean類(lèi)型的吁断,因此對(duì)其他類(lèi)型應(yīng)用這些操作符時(shí)趁蕊,自動(dòng)執(zhí)行Boolean()函數(shù)
如果有什么錯(cuò)誤或者不準(zhǔn)確的地方歡迎指正。