数值 + 数值
console.log(88 + NaN); // NaN
//正无穷大+负无穷大不知道往那边计算,返回NaN
console.log(Infinity + -Infinity); // NaN
console.log(Infinity + Infinity); // Infinity
console.log(-Infinity + -Infinity); // -Infinity
console.log(+0 + +0); // +0
console.log(-0 + -0); // -0
console.log(+0 + -0); // +0
字符串+字符串
console.log('hello ' + 'world'); // 'hello world'
字符串+数值
console.log(10 + '10.10'); // '1010.10'
console.log('1' + 2 + 3 + 4); // '1234'
console.log(1 + 2 + 3 + '4'); // '64'
console.log(1 + (2 + '3') + 4); // '1234'
字符串+?(其他)
console.log("1" + NaN); // 1NaN
console.log("1" + true); // 1true
console.log("1" + false); // 1false
console.log("1" + undefined); // 1undefined
console.log("1" + null); // 1null
console.log("1" + Infinity); // 1Infinity
console.log("1" + -Infinity); // 1-Infinity
// 数组+运算会调用toString方法,返回''
console.log('1' + []); // 1
console.log('1' + [123]); // 1123
console.log('1' + [,,,]); // 1,,
console.log('1' + [123,456,789,'aaa']); // 1123,456,789,aaa
console.log('1' + function a() {}); // 1function a() {}
console.log('1' + {}); // 1[object Object]
console.log('1' + {a: 1}); // 1[object Object]
// 数值 + ?
console.log(1 + []); // 1
console.log(1 + [1,2,3]); // 11,2,3
console.log(1 + [123]); // 1123
console.log(1 + [123,456,789]); // 1123,456,789
console.log(1 + [,2,,]); // 1,2.
console.log(function a() {} + [12,12]); // function a(){}1212
console.log([] + function a() {}); // function a() {}
console.log({} + [12,34]); // [object Object]12,34
console.log({a : 1} + [12,12]); // [object Object]12,12
数组,函数和对象
console.log([1] + [2]); // 12
console.log([] + [1,2,3]); // 1,2,3
console.log(({}) + ({})); // [object Object][object Object]
console.log(({}) + ({a:1})); // [object Object][object Object]
console.log((function a() {}) + (function b() {}));
// function a() {}function b(){}
console.log({} + []); // [object Object]
console.log([] + {}); // [object Object]
console.log((function a() {}) + {});
// function a(){}[object Object]
console.log([1,2] + (function b() {})); // 1,2function b() {}