一、字符串的 + 运算
注意: 只要是字符串在和任意数据类型做相加+的运算,都是字符串拼接
例:
console.log('5' + '3'); //53
console.log('5' + 3); //53
console.log('哈哈' + '5abc'); //哈哈5abc
console.log('哈哈' + NaN); //哈哈NaN
console.log('哈哈' + true); //哈哈true
console.log('哈哈' + undefined); //哈哈undefined
console.log('哈哈' + null); //哈哈null
二、字符串的其他数学运算
字符串类型的数据:在进行数学运算(- * / %)时,会先将自身隐式转换(Number)成数值类型再进行计算
例:
console.log('5' - '3'); //2
console.log('5' - 3); //2
console.log('5' * 3); //15
console.log('5' / 3); //1.6666666666666667
console.log('5' % 3); //2
三、NAN的数学运算
任意数据类型和NaN做数学运算,结果都是NaN,除了与字符串的 + 运算
例:
console.log(NAN + 1); // NAN
console.log(NAN - 1); // NAN
console.log(NAN * 1); // NAN
console.log(NAN / 1); // NAN
console.log(NAN % 1); // NAN
console.log(NAN + true); // NAN
console.log(NAN + null); // NAN
console.log(NAN + undefined); // NAN
console.log(NAN + '123'); // NAN123
四、undefined的数学运算
未定义类型的数据:在进行数学运算(+ - * / %)时,会先将自身隐式转换(Number)成数值类型再进行计算
例:
console.log(undefined + undefined); //NaN
console.log(undefined + 1); //NaN
console.log(undefined + '5' + '哈哈'); //'undefined5哈哈'
五、null的数学运算
空类型的数据:在进行数学运算(+ - * / %)时,会先将自身隐式转换(Number)成数值 类型再进行计算
例:
console.log(null + true); //1
console.log(null + 5); //5
console.log('null' + (null - 3) + undefined); //null-3undefined
六、关系运算
任意数据类型在进行关系运算时,会先将自身隐式转换(Number)成数值,在进行比较字符串与字符串之间的比较< > <= >=,比较的是ascii码,一位一位的去比
例:
console.log(5 > 3); //true
console.log(5 > '3'); //true
console.log('5' < true); //false
console.log(5 > '6哈哈'); //false
console.log('a' < 'ab'); //true
console.log('ac' > 'ab'); //true
console.log('abcdefg' < 'bz'); //true
console.log(NaN < NaN) // false
console.log('100' < 'a'); //true
console.log('5' == 5); //true
console.log(1 == true); //true
console.log(1 === true); //false
console.log(0 == false); //true
console.log(null < 1); // true
也存在一些特殊,例如:
console.log(null == 0); //false
console.log(null == ' '); //false
console.log(null == ''); //false
console.log(null == false); //false
console.log(null == undefined); //true