JS中一个[数字]与一个[数字字符串]相加(比如1+"2")的结果是什么?


在JavaScript中,我们知道,两个数值(number类型)相加肯定会返回他们的和(例如 1+2=3)。但如果是其中一个为字符串时(例如 1+"2"=?)结果却不是3,而是 "12",注意是有双引号包裹的字符串"12"。

案例:


                    /**
                     * 计算a与b的和
                     **/
                    function sum(a, b) {
                        return a + b;
                    }
                      
                    sum(1, 2);   //结果为 3
                    sum(1, "2"); //结果为 "12"
                

正如上述所说,第一个结果是 3,第二个结果是 "12"

在这个例子中,JavaScript 为了使 sum(1, "2") 返回一个有意义的值,在数值和字符串相加时,把数值1(number类型)转为了字符串,所以此时 1+"2"的操作等同于 "1"+"2",最终返回字符串 "12"