根據(jù) ES5 規(guī)范,如果某個(gè)操作數(shù)是字符串或者能夠通過(guò)以下步驟轉(zhuǎn)換為字符串的話,+ 將進(jìn)行拼接操作。如果其中一個(gè)操作數(shù)是對(duì)象(包括數(shù)組),則首先對(duì)其調(diào)用 ToPrimitive 抽象操作,該抽象操作再調(diào)用 [[DefaultValue]],以數(shù)字作為上下文。如果不能轉(zhuǎn)換為字符串,則會(huì)將其轉(zhuǎn)換為數(shù)字類型來(lái)進(jìn)行計(jì)算。
簡(jiǎn)單來(lái)說(shuō)就是,如果 + 的其中一個(gè)操作數(shù)是字符串(或者通過(guò)以上步驟最終得到字符串),則執(zhí)行字符串拼接,否則執(zhí)行數(shù)字加法。
那么對(duì)于除了加法的運(yùn)算符來(lái)說(shuō),只要其中一方是數(shù)字,那么另一方就會(huì)被轉(zhuǎn)為數(shù)字。