我們在對各種非Number
類型運用數學運算符(- * /
)時,會先將非Number
類型轉換爲Number
類型;
1 - true // 0
1 - null // 1
1 * undefined // NaN
2 * ['5'] // 10
注意+
是個例外,執行+
操作符時:
- 1.當一側爲
String
類型,被識別爲字符串拼接,並會優先將另一側轉換爲字符串類型。 - 2.當一側爲
Number
類型,另一側爲原始類型,則將原始類型轉換爲Number
類型。 - 3.當一側爲
Number
類型,另一側爲引用類型,將引用類型和Number
類型轉換成字符串後拼接。
123 + '123' // 123123 (規則1)
123 + null // 123 (規則2)
123 + true // 124 (規則2)
123 + {} // 123[object Object] (規則3)