javascript - 為什麼js運算子"+"?
phpcn_u1582
phpcn_u1582 2017-06-12 09:23:43
0
4
721

為什麼 '11'可以轉換成數字11,
而 1 '11' 結果卻是 '111' 字串?

phpcn_u1582
phpcn_u1582

全部回覆(4)
淡淡烟草味

由於在 ES6 之前就是這樣的答案,所以本答案從 ES5 中得到。

+'11'

答案來源:ECMAScript5.1 11.4.6

一元 + 操作將其操作值轉換為數字,別問為什麼,規範上定義的。

1 + '11'

答案來源:ECMAScript5.1 11.6.1

加法操作的步驟:

  1. 將左右兩值先轉換為元類型(如字串、數字);例如布林會轉為數字,物件通常情況轉為字串等;

  2. 加起來

    1. 若左值或右值轉換後的值任一為字串,則將兩邊的值都轉為字串作拼接運算;

    2. 否則,將左值和右值都轉為數字,然後對數字作加法操作;(如布爾型轉換元類型就不是字符串,而仍然是布爾,所以在這裡判斷走該分支,則將布爾轉為數字1 或0)

  3. 回傳結果。

阿神

javascript 是弱型別語言,這是一個原因。再有,如果 + 和數字放在一起,被認為是數字的正數,例如 var a = +11 等同於 var a = 11。這樣,而 + 只有在字串拼接時才會作為拼接的運算子。而 + '11'就不算是拼接字串,因為根本沒有拼接字串。所以 js 會將 '11' 隱性的轉換為 11

我也是 js 的初學者。這是我的理解。如果不對的話歡迎大神指正。

仅有的幸福

+'11' -----> 一元運算子

The unary + operator converts its operand to Number type.

1+'11' ----> 加法運算子

如果其中一個運算元為字串類型,那麼轉換另外一個運算元為字串,並傳回兩個字串 聯結的結果。

漂亮男人

+'11'+ 是正負的正,相當於 Number('11')

1 + '11' 是加減的加,調用了內部的 toPrimitive 方法比較,其中一方是字符串的時候會嘗試調用另一方的 toString 方法

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板