我想了解JavaScript的核心工作。其中一个东西,我偶然发现,当我做JavaScript类型强制偏好
1 + "2"
返回“12”。但它可能也3.我推断,也许这是因为一些总是可以转换为字符串,但不是一个数字的字符串。
而且我注意到,
100 + true = 101.
这里太那个扣works.the布尔值转换为数字。但数据类型转换如何正确工作?
我想了解JavaScript的核心工作。其中一个东西,我偶然发现,当我做JavaScript类型强制偏好
1 + "2"
返回“12”。但它可能也3.我推断,也许这是因为一些总是可以转换为字符串,但不是一个数字的字符串。
而且我注意到,
100 + true = 101.
这里太那个扣works.the布尔值转换为数字。但数据类型转换如何正确工作?
您应该看到这篇文章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
,因为这两个基本上是整数。
JavaScript中的+
运算符有两个用途。第一个是添加,第二个是连接。如果两个都是数字,JavaScript只会被添加。其他任何将被连接。这实际上是一个从未纠正过的JavaScript错误。 JavaScript只会将字符串转换为数字进行比较。
您可以勾选此链接(http://jibbering.com/faq/notes/type-conversion/)。在你的两个例子中,转换都是正确的。 –
请注意,此行为*应该遵循跨浏览器类型的ECMAScript标准,但我不会依赖它始终如此。要小心并保持理智,并在添加它们之前使它们的值相似... ECMAScript定义了一个确定在http://es5.github.io/x9.html中的评估方式的冗长方式 - 它主要讨论测试值(' 1 ==“1”'?),但对这些值进行操作时应使用相同的转换规则。 – phatskat
您可以在这里阅读有关加号运算符的信息,http://es5.github.io/#x11.6.1,然后按照所用函数的链接进行操作。 –