数值的+ , - , * , / , %(取模)和数学运算完全相同
注意:小数点运算时会产生误差
var a = 0.1;
var b = 0.2;
var s = a + b;
console.log(s); //0.30000000000000004
不同数据类型之间的 + 运算
var a = "4";
var b = 1; //"41"
var b = true; //"4true"
var b; //"4undefined"
var b = null; //"4null"
var b = { a: 1 }; //"4[object, Object]"
var b = []; //"4"([]-->"")
var b = [1]; //"41"
var s = a + b;
console.log(s); //(隐式转换) 所有的隐式转换都是使用强制转换方法
只要有一个是字符类型,另一个会被转换为字符类型,并且首尾相连。
如果一侧是布尔值,重要的是另一侧的值,会根据另一侧转换。
如果两侧都没有字符或者数值,就会都转换为数值运算。
var a = true;
var b = 1; //2
var b = "1"; //"true1"
var b; //NaN
var b = null; //1
var b = { a: 1 }; //"true[object Object]" 一旦遇到对象都会隐式转换为字符相加
var b = []; //"true"
var s = a + b;
console.log(s);
任何 -、*、/、% 全部遵照于数值运算规则,两侧都转换为数值运算。