小言_互联网的博客

===和==的区别

496人阅读  评论(0)

==

==:称为 等值符(equality),当两边的值类型相同时直接比较值是否相同,若不相同,则先转化为 类型相同 的值,再进行比较;

这么理解: 当进行==比较时候: 先检查两个操作数数据类型,如果相同, 则进行值的比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较; 而===比较时, 如果类型不同,直接就是false,只当类型相同后再比较值,而不会进行类型转换。

一个判断值是否相等,一个是判断值及类型是否完全相等。


==的类型转换规则:
1)如果等号两边是boolean、string、number三者中任意两者进行比较即类型不同时,优先转换为数字进行比较。

100==100//返回true,将“100”字符串转换为数字100和100比较为true

/*数字转换为true/false时:0为false,非0数字为true*/
1==true     //返回true,将左边的true,将它转化为1,再进行比较

0==false    //返回true,将右边的false转化为0,再进行比较1==01//返回false,等号两边值得类型相同,不再转换类型了

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,还彼此相等

undefined == undefined //返回true
null == null           //返回rue
undefined == null      //返回true

3)注意:NaN==NaN //返回false,NaN和所有值包括自己都不相等即返回false。

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判断是否为NaN*/
isNaN(NaN) //得到true



===

===:称为 等同符(identity ),当两边 值的类型相同时,再直接比较值,若类型就先不相同就不再比较值,直接返回false;

100===100//返回false,类型不同,左边为数值,右边为字符串

abc===“abc”   //返回false,类型不同,左边为变量,右边为字符串

‘abc’===“abc”  //返回true,类型相同且值也相同

NaN===NaN   //返回false,NaN和所有值包括自己都不相等即返回false

false===false  //返回true
  1. 对于对象、数组、函数(三者均为对象Object的instance):仅仅有等号
    两边引用了同一个对象。才返回true。引用不同对象。即使两个对象值相 等也返回false。
var a = {test:'test'};
var b = {test:'test'}; //b另外创建的一个新对象{test:'test'},和a不是同一个对象但值相等
var c = a;             //a和c引用了同一个对象{test:'test'}
a === b    			   //得到false,对象不相等则不在比较值
a === c    			   //得到true,对象相等且值也相等
  1. 如果等号两边出现了null或undefined,null和undefined除了和自己相等,还彼此相等
undefined === undefined //得到true
null === null //得到true
undefined === null //得到false
  1. 注意:NaN===NaN
    //返回false,NaN和所有值包括自己都不相等即返回false。
NaN===NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判断是否为NaN*/
isNaN(NaN) //得到true

转载:https://blog.csdn.net/daponi/article/details/102475448
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场