2010-06-07 54 views

回答

23

對於字符串和數字都定義了「+」運算符,因此當您將它應用於字符串和數字時,數字將被轉換爲字符串,然後將字符串連接起來: '7'+ 4 >'7'+'4'=>'74' 但' - '僅限於數字而不是字符串,所以字符串'7'將被轉換爲數字: '7' - 4 => 7 - 4 => 3

15

+運算符在JavaScript中被重載以執行連接和添加。 JavaScript決定執行哪個操作的方式取決於操作數。如果其中一個操作數不是Number(或原始類型number),則兩者都將被轉換爲字符串進行串聯。

3 + 3 = 6 
3 + '3' = 33 
'3' + 3 = 33 
(new Object) + 3 = '[object Object]3'

-運營商,然而,這只是對數字,因此操作數總是在操作過程中被轉換爲數字。

+0

必須愛Java的工作方式和它造成的所有有趣的錯誤。 – pxl 2010-06-07 08:37:25

+0

woops,意思是javascript,鍵入java。 – pxl 2010-06-07 08:48:30

+0

沒有人對這裏的弱打字發笑話嗎?這令我失望。 – 2013-04-11 13:50:08

29

+是字符串連接運算符,因此當您執行'7' + 4時,您會將4強制爲一個字符串並添加它。 -運營商沒有這種含糊不清的地方。

如果你想成爲明確的使用parseInt()parseFloat()

parseInt('7', 10) + 4 

爲什麼指定基數,以10?因此'077'未被解析爲八進制。

+3

以防萬一:使用parseInt('7',10)和base參數,以便'077'不會被誤認爲是八進制整數。 – Residuum 2010-06-07 08:19:55

+0

@Residuum優點。 – cletus 2010-06-07 08:22:40

+1

或...你可以使用'Number('077')'',它有點像'parseFloat',並且總是把字符串當作基數爲10的。 – 2010-06-07 08:22:46

2

因爲+是濃度,如果要添加兩個數字,你應該分析他們先parseInt函數()和 - 號是減法

2

符號+ Javascript中被解釋爲串聯第一,然後另外,由於第一部分是字符串('7')的事實。因此解釋器將第二部分(4)轉換爲字符串並將其連接起來。

至於'7' - 4,除了減法之外沒有其他含義,因此減法完成。

相關問題