2013-11-10 65 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只会将字符串转换为数字进行比较。