JavaScript中的==和===区别?null和undifined区别?null==undifined的结果?

1.区别:

  ==只比较数值,在比较的过程中数据可进行数据类型转换

  ===比较值和数据类型,在比较的过程中数据不可进行数据类型转换

2.null和undifined区别

  null表示无的对象,此处没有值,null用来占位的,转换Number类型为0,typeof(null)为object

  undifined表示缺少值,即此处应该有值,但没有定义,转换为Number类型为NaN,typeof(undifined)为undifined

3.null和undifined比较

  null==undifined是true

  null===undifined是false

  原因:在代码规范中提到, 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。null 和 undefined都代表着无效的值。

如果不是相等性比较:

  null>0   //null转化为number,为0,所以0>0结果为false。
  null>=0 //null转化为number,为0>=0,所以结果为true。
  null==0 // null在做相等性判断时,不进行数据类型转换,所以null和0为不同类型数据,结果为false

4.==比较运算符底层细节

  如果x是null,y是undifined,返回true;

  如果x是数值,y是字符串,返回x==Number(y)的比较结果;

  如果x是布尔值,返回Number(x) == y的比较结果

  如果x是字符串或数值或Symbol值,y是对象,返回x == ToPrimitive(y)的结果

  以上情况不满足结果都是false

例如:'a' == true

  1.首先一方是布尔值true先转为数值型为1,'a' == 1

  2.然后字符串需要转为数值型,a转为NaN,比较NaN==1 结果为false

  

 

 

原文地址:https://www.cnblogs.com/cqweb/p/14138357.html