[英]Adding and subtracting strings and numbers in Javascript - auto type conversion?
让我们看看下面的 Javascript 代码。
<script type="text/javascript" lang="javascript">
function test()
{
alert('2'+8);
alert(8-'2');
}
</script>
在第一个警告框中,它显示 2 和 8 的连接结果,即28 。 然而,在第二个警告框中,它显示了两个数字的减法,即6 。 如何?
+
运算符已重载。 如果任何操作数是字符串,则执行字符串连接。 如果您有两个数字,则执行加法。 -
不会以这种方式重载,所有操作数都转换为数字。
从规范:
(……)
7. 如果 Type( lprim ) 是 String 或者 Type( rprim ) 是 String,那么
- 返回作为连接 ToString( lprim ) 后跟 ToString( rprim ) 的结果的字符串
8. 将加法运算的结果返回到 ToNumber( lprim ) 和 ToNumber( rprim )。
(……)(……)
5. 令lnum为 ToNumber( lval )。
6. 令rnum为 ToNumber( rval )。
7. 返回对lnum和rnum应用减法运算的结果。
(……)
+
用于字符串连接和加法。 如果任一操作数是字符串,则使用连接。 -
仅用于减法,两个操作符总是转换为数字。
+
用于连接和加法,但与字符串一起使用时,默认为连接。 -
不能用于字符串,所以它的操作数被转换为数字。
编辑:这并不意味着与上述帖子相同! XD
第一:它将第二个操作数转换为第一个操作数(字符串),因为 + 也用于字符串连接。
第二:它将第二个操作数转换为数字,因为 - 仅用于数字操作。
如果你不想要这个,一个简单的解决方法是:(1*'2')+8 JSYK
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.