根據 ES5 規范,如果某個操作數是字符串或者能夠通過以下步驟轉換為字符串的話,+ 將進行拼接操作。如果其中一個操作數是對象(包括數組),則首先對其調用 ToPrimitive 抽象操作,該抽象操作再調用 [[DefaultValue]],以數字作為上下文。如果不能轉換為字符串,則會將其轉換為數字類型來進行計算。
簡單來說就是,如果 + 的其中一個操作數是字符串(或者通過以上步驟最終得到字符串),則執行字符串拼接,否則執行數字加法。
那么對于除了加法的運算符來說,只要其中一方是數字,那么另一方就會被轉為數字。