转 boolean 规则:
null, undefined, "", 0, -0, NaN 转换成布尔值是false, 剩下的全转化 true;
转 number 规则:
string '2.3.1' => NaN;
undefined => NaN;
null, '', false, [] ==> 0;
object => x Number(object.toString())
隐式类型转换(是==引起的转换)
- 对象和布尔值比较
对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字
[] == true; //false
[]转换为字符串'',然后转换为数字0,true转换为数字1,所以为false
- 对象和字符串比较
对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。
[1,2,3] == '1,2,3' // true [1,2,3]转化为'1,2,3',然后和'1,2,3', so结果为true;
3、对象和数字比较
[1] == 1; // true `对象先转换为字符串再转换为数字,二者再比较 [1] => '1' => 1 所以结果为true
4、 字符串和数字比较
Paste_Image.png字符串和数字进行比较时,字符串转换成数字,二者再比较。
'1' == 1 // true
来看一个有趣的题
[] == false;
![] == false;
- [] == false; //true这里是因为==符号会把两边的类型转换成一样的。这里会转成number[] == 0 // 把false转为number"" == 0 // 用array的valueOf/toString获取基本类型0 == 0 // 空字符串转成数字之后是0,Number('')
2.![] == false; //truejavascript中所有对象都是true。!true == false // []也是object,所以是truefalse == false // true取反是false
还有一些需要记住的,像:
undefined == null //true
undefined和null 比较返回true,二者和其他值比较返回false
Number(null) //0
网友评论