只有加法运算会把运算子转换成字符串,其他运算都自动转化成数值
大小比较时会先转化成数字类型再进行比较
一元运算符也会把运算子转成数值
'a' + 1 // 'a1'
'a' - 1 // NaN
true +5 //6
false + 5 //5
1>2>3 // false
3>2>1 // true
+'1'+1 // 2
+'s'+2 // NaN
's' + null //'snull'
's' + undefined // 'sundefined'
1 + true + undefined + 's' // 1+1+NaN+'s'=2+NaN+'s'=NaN+'s'=NaNs
运算符 == 和 === 比较
==是抽象相等运算符,而===是严格相等运算符。==运算符是在进行必要的类型转换后,再比较。===运算符不会进行类型转换,所以如果两个值不是相同的类型,会直接返回false。
使用==时,可能发生一些特别的事情,例如:
1 == '1'; // true
1 == [1]; // true
1 == true; // true
0 == ''; // true
0 == '0'; // true
0 == false; // true
new Number(2) == 2 //true
new Number(2) === 2 // false 左边是Number类型本质是对象Object,右边是number 类型是基本类型
[] == ![] // true
{} == !{} // false
https://blog.csdn.net/magic_xiang/article/details/83686224
网友评论