回答
1+'1'+1 = '111'
1+1+'1' = '21'
'1'+(1+1) = '12'
'1'+1+1 = '111'
的Javascript,直到達到一個字符串,然後切換到串聯,並且它也執行數學首先遵循常規公式規則運行()操作。
不一定是最好的答案,但我明白我想要什麼:表達式從左到右進行評估,我理解了+運算符的連接。謝謝 – ontk
他們都是'44'。將'4'作爲字符串存在將整個操作轉換爲一個字符串,因此兩個字符連接在一起。
兩者都會導致String
:
"44"
這是因爲+
運營商提供2個目的 - 除了和串聯。而且,如果其中一個操作數是String
(或者被內部ToPrimitive()
強制轉換爲String
),它們將被連接在一起。
這描述in the specification爲:
7)如Type(lprim)是字符串或Type(rprim)是字符串,然後
一個)返回字符串即結合ToString(lprim)後接ToString(rprim )
8)返回將所述加法運算到ToNumber的(結果lprim)和ToNumber(rprim)。請參閱下面的註釋11.6.3。
如果你想確保此外,還可以使用parseFloat()
或在每個unary +
:
var a = "4", b = 4;
console.log(parseFloat(a) + parseFloat(b)); // 8;
console.log((+a) + (+b)); // 8, extra parenthesis for clarity
引自:http://javascript.about.com/od/variablesandoperators/a/vop10.htm
一件事,也可能混淆初學者是JavaScript使用+ 與文本字符串意味着什麼,從什麼 用數字意味着完全不同的。而數字+表示將數字 與文本+表示連接在一起。連接 基本上意味着加入一個文本字符串到第一個結尾,因此「我的」+「書籍」給出了「mybook」。初學者傾向於 弄糊塗的是,雖然3 + 3給6,「3」+「3」給「33」。
您還可以使用+ =與文本字符串直接將變量或 文本添加到 左側的文本字符串變量的末尾。
混合數據類型
附加混亂,當你與那些不同類型的變量 工作可能出現。所有操作都要求它們在兩個操作上的變量 都是相同的類型。在JavaScript 能夠執行任何涉及兩個不同數據類型的操作之前,必須先將其中一個變量從一種類型轉換爲其他類型的變量。如果沒有第一個 將數字轉換爲文本或將文本轉換爲數字,則無法將數字添加到文本字符串。
在數據類型之間轉換時,我們有兩種選擇。我們可以允許 JavaScript自動爲我們做轉換,或者我們可以告訴 JavaScript我們要轉換哪個變量。
JavaScript將嘗試將任何文本字符串轉換爲數字 當執行減法,乘法,除法和 取餘數。您的文本字符串實際上需要包含 ,JavaScript可以將其轉換爲數字(即,像 「10」這樣的字符串),以便轉換生效。
如果我們使用+,那麼這可能意味着我們想要將 字符串轉換爲數字,然後添加或我們想要將數字 轉換爲字符串並連接它們。 JavaScript只能執行 這兩個選項之一。它總是將數字轉換爲字符串(因爲無論字符串是否包含數字, 都會起作用)。
以下是一些示例。
「5」 - 3 = 2;
「5」 + 3 = 「53」
2 + 「7」= 「27」
5 + 9 + 「1」= 「141」
由於減法只適用於數字1在執行減法之前,將文本字符串 轉換爲數字。
在2和3中,數字在被 連接(連接)到另一個文本串之前被轉換爲文本串。
4,最左邊的加法先完成。由於這兩個數字都是 ,所以它們實際上被添加在一起而不被視爲文本。第一次加法的結果 給我們帶來了與第三次 示例類似的情況,因此該加法的結果被轉換爲文本並連接到 。
要實際強制JavaScript將文本字符串轉換爲數字,我們可以使用Number(「3」)或強制JavaScript將 數字轉換爲文本字符串,我們可以使用String(5)。
如果這是一個引用,源應該歸因於某個地方。 –
- 1. 評估JavaScript表達式
- 2. 如何評估以下Javascript表達式?
- 3. JavaScript如何評估語句表達式?
- 4. 如何評估表達式?
- 5. 評估表達式
- 6. 在javascript中的表達式評估
- 7. Javascript無法評估表達式
- 8. 用於布爾表達式評估的Javascript評估
- 9. 如何評估樹中的表達式?
- 10. 如何評估這些C表達式?
- 11. Angular如何評估表達式?
- 12. Python - 如何評估以下表達式?
- 13. 如何評估ExpressionVisitor中的表達式?
- 14. 如何評估這些表達式?
- 15. Python如何評估這個表達式?
- 16. 如何評估Handlebars表達式?
- 17. C#如何評估lambda表達式?
- 18. 如何評估MathML表達式?
- 19. 調試表達式評估
- 20. 表達式樹評估
- 21. Xtext評估表達式
- 22. 評估數學表達式
- 23. 表達式評估順序
- 24. 表達式無法評估
- 25. 內聯表達式評估
- 26. 評估集合表達式
- 27. 評估前綴表達式
- 28. JasperReports表達式評估
- 29. 遞歸表達式評估?
- 30. 評估表達式樹
它打印「44」都假定爲字符串 – exussum
您應該得到一個JavaScript參考來解決這些基本問題。 –