2013-11-10 43 views
1

我想了解JavaScript的核心工作。其中一個東西,我偶然發現,當我做JavaScript類型強制偏好

1 + "2" 

返回「12」。但它可能也3.我推斷,也許這是因爲一些總是可以轉換爲字符串,但不是一個數字的字符串。

而且我注意到,

100 + true = 101. 

這裏太那個扣works.the布爾值轉換爲數字。但數據類型轉換如何正確工作?

+0

您可以勾選此鏈接(http://jibbering.com/faq/notes/type-conversion/)。在你的兩個例子中,轉換都是正確的。 –

+1

請注意,此行爲*應該遵循跨瀏覽器類型的ECMAScript標準,但我不會依賴它始終如此。要小心並保持理智,並在添加它們之前使它們的值相似... ECMAScript定義了一個確定在http://es5.github.io/x9.html中的評估方式的冗長方式 - 它主要討論測試值(' 1 ==「1」'?),但對這些值進行操作時應使用相同的轉換規則。 – phatskat

+0

您可以在這裏閱讀有關加號運算符的信息,http://es5.github.io/#x11.6.1,然後按照所用函數的鏈接進行操作。 –

回答

2

您應該看到這篇文章https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals。這將很容易理解javascript如何工作。

在你的第一個例子中1 + "2"它返回12,因爲javascript concat整數和字符串,如果你想總結兩個值。但是如果你想要做sum 1+2 = 3,因爲兩個值都是整數。如果兩個值是字符串和整數,則整數值自動轉換爲字符串。

在你的第二個例子中,100 + true = 101. 100是整數,而true =1那麼它的總和爲100+1 =101,因爲這兩個基本上是整數。

0

JavaScript中的+運算符有兩個用途。第一個是添加,第二個是連接。如果兩個都是數字,JavaScript只會被添加。其他任何將被連接。這實際上是一個從未糾正過的JavaScript錯誤。 JavaScript只會將字符串轉換爲數字進行比較。