JavaScript中 == 与 ===

定义:
== :相同
=== :严格相同

==
如果两个值的类型相同,就比较值;
如果两个值类型不同,分五种情况:
 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。