為什么 +'11'可以轉化成數字11,而 1 + '11' 結果卻是 '111' 字符串?
為什么js運算符"+"?
當年話下
2018-11-20 17:18:11
TA貢獻1869條經驗 獲得超4個贊
由于在 ES6 之前就是這樣的答案,所以本答案從 ES5 中獲取。
答案來源:ECMAScript5.1 11.4.6
一元 +
操作將其操作值轉換為數字,別問為什么,規范上定義的。
答案來源:ECMAScript5.1 11.6.1
加法操作的步驟:
將左右兩值先轉換為元類型(如字符串、數字);比如布爾會轉為數字,對象通常情況轉為字符串等;
加起來
若左值或右值轉換后的值任一為字符串,則將兩邊的值都轉為字符串作拼接操作;
否則,將左值和右值都轉為數字,然后對數字作加法操作;(如布爾型轉換元類型就不是字符串,而仍然是布爾,所以在這里判斷走該分支,則將布爾轉為數字 1 或 0)
返回結果。
舉報