Javascript的加性运算符会在后台转换不同的数据类型。
一.如果两个操作数都是数值,按照常规的加法计算:
var a = 2;
console.log(a+NaN); //NaN 如果有一个操作数是NaN,则返回NaN
console.log(Infinity+Infinity);//Infinity
console.log(Infinity+(-Infinity));//NaN
console.log((-Infinity)+(-Infinity));//Infinity
console.log((+0)+(+0));//+0
console.log((+0)+(-0));//+0
console.log((-0)+(-0));//-0
二.如果有一个操作数是字符串
- 如果两个操作数都是字符串,相当于字符串拼接
- 如果只有一个操作数是字符串,则将另一个操作数转化为字符串,然后再执行字符串拼接
-如果有一个操作数是对象,数值或者布尔值,首先调用它们的toString()
方法取得对应的字符串,然后执行拼接(包括null
,undefined
)这里跟下一篇:Javascript中减法运算符总结
总结要区分
1.String+String
var a = '10',
b = '20';
console.log(a+b); //1020
2.String+Object
var a = '10',
b = {_key:20};
console.log(a+b); //10[object Object]
//Object.prototype.toString()方法返回一个表示该对象的字符串。
3.String+Number
var a = '10',
b = 20;
console.log(a+b); //1020
var a = 10,
b = '20';
console.log(a+b); //1020
4.String+Boolean
var a = true,
b = '20';
console.log(a+b); //true20
var a = false,
b = '20';
console.log(a+b); //false20
5.String+null
var a = null,
b = '20';
console.log(a+b); //null20
6.String+undefined
var a = undefined,
b = '20';
console.log(a+b); //undefined20
三.加法的独立操作
var a = 10,
b = 5;
var result = 'hello world 10 + 5 = ' + a + b;
console.log(result); //'hello world 10 + 5 = 105'
var a = 10,
b = 5;
var result = 'hello world 10 + 5 = ' + (a + b);
console.log(result); //'hello world 10 + 5 = 15'