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

时间:2011-11-14 01:12:54

标签: javascript type-conversion

让我们看看以下Javascript代码。

<script type="text/javascript" lang="javascript">
    function test()
    {
        alert('2'+8);
        alert(8-'2');
    }
</script>

在第一个警告框中,它显示2和8串联的结果, 28 。但是,在第二个警告框中,它会显示两个数字的减法,即 6 。怎么样?

5 个答案:

答案 0 :(得分:10)

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

来自规范:

  

11.6.1 The Addition operator ( + )

     

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

     
      
  • 返回串联ToString( lprim )后跟ToString( rprim
  • 的结果的字符串   
     

8。将添加操作的结果返回到ToNumber( lprim )和ToNumber( rprim )。
  (...)

     

11.6.2 The Subtraction Operator ( - )

     

(...)
  5.让 lnum 为ToNumber( lval )   6.让 rnum 为ToNumber( rval )   7.将减法运算的结果返回到 lnum rnum
  (...)

答案 1 :(得分:4)

+用于连接和添加,但是当与字符串一起使用时,默认为连接。 -不能用于字符串,因此其操作数将转换为数字。

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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