先来看两个例子:
对于加法操作费用(+)的用法,如果操作数中含有字符串,那么就要应用如下规则:
var foo = "11"+2;
console.log(foo);//112
console.log(typeof foo);//string
var foo = "11"+2-"1";
console.log(foo);//111
console.log(typeof foo);//number
对于加法操作费用(+)的用法,如果操作数中含有字符串,那么就要应用如下规则:
1)如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
2)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
如果有一操作数为对象,数字或者布尔值,则调用它们的toString()方法取得相应的字符串的值,然后再应用前面关于字符串的规则。对于Undefined和null,则分别调用String()方法并取得字符串"undefined"和“null”。
对于减法操作符(-),如果操作符中含有字符串,那么就要应用如下规则:
如果有一个操作符是字符串,布尔值,null或者undefined,则先在后台调用Number()函数将其转换为数值,然后再执行数和数字之间的减法运算。如果转换的结果为NaN,那么得到的结果就是NaN。
tips:Number()函数的转换规则中:如果是null值,则返回0;如果是undefined,则返回NaN.
所以,在上述例子中。“11”+2,执行的是将数字2转换成字符串再与“11”拼接,最后的结果为“112”,string类型;“112”-“1”,分别将“112”和“1”转换成数字,相减,结果为111,number类型。