繁体   English   中英

在 Javascript 中添加和减去字符串和数字 - 自动类型转换?

[英]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 如何?

+运算符已重载。 如果任何操作数是字符串,则执行字符串连接。 如果您有两个数字,则执行加法。 -不会以这种方式重载,所有操作数都转换为数字。

从规范:

11.6.1 加法运算符 ( + )

(……)
7. 如果 Type( lprim ) 是 String 或者 Type( rprim ) 是 String,那么

  • 返回作为连接 ToString( lprim ) 后跟 ToString( rprim ) 的结果的字符串

8. 将加法运算的结果返回到 ToNumber( lprim ) 和 ToNumber( rprim )。
(……)

11.6.2 减法运算符 ( - )

(……)
5. 令lnum为 ToNumber( lval )。
6. 令rnum为 ToNumber( rval )。
7. 返回对lnumrnum应用减法运算的结果。
(……)

+用于字符串连接和加法。 如果任一操作数是字符串,则使用连接。 -仅用于减法,两个操作符总是转换为数字。

+用于连接和加法,但与字符串一起使用时,默认为连接。 -不能用于字符串,所以它的操作数被转换为数字。

编辑:这并不意味着与上述帖子相同! XD

第一:它将第二个操作数转换为第一个操作数(字符串),因为 + 也用于字符串连接。

第二:它将第二个操作数转换为数字,因为 - 仅用于数字操作。

如果你不想要这个,一个简单的解决方法是:(1*'2')+8 JSYK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM