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

Lio*_*ion 6 javascript type-conversion

我们来看看下面的Javascript代码.

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

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

Fel*_*ing 10

+操作符被重载.如果任何操作数是字符串,则执行字符串连接.如果您有两个数字,则执行添加.在-不以这样的方式过载,所有操作数转换为数字.

从规格:

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.
(......)


dec*_*eze 5

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