定义:
== :相同
=== :严格相同
==
如果两个值的类型相同,就比较值;
如果两个值类型不同,分五种情况:
1、如果一个是null,一个是undefined 相等
2、如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
3、Boolean值和数值比较,将Boolean值转为数值,true转1,false转0
4、Boolean值和字符串比较:'1'==true,'0'==false 成立
5、NaN永不相等
//demo
//==
null == null //true
undefined == undefined //true
null == undefined //true
'100'==100 //true
1==true //true
'1'==true //true
'20'==true //false
'1'=='01' //false
NaN==NaN //false
注意:JS中,只有0,-0,NaN,"",null,undefined这六个值转为布尔值时,结果为false(0),[]的值是true(或者是1),所以[]置于"=="运算符两侧时,会进行隐式转换,![]==false的结果是true;![]==0的结果是true;
===
1、类型不同则不等;
2、两数为数值,则比较数值是否相等;如果至少其中一个为NaN,则不相等;(NaN只能用isNaN()判断)
3、两个字符串,字符一样,位置一样,则相等;
4、两true or 两 false 相等;
5、两值为同一函数或同一对象相等;
6、两 null or 两 undefined 相等。
//===
1 === true //false
NaN === NaN //false
100 === '100' //false
100 ===100 //true
'abc' === 'abc' //true
false ===false //true
null ===undefined //false
null === null //true