javascript中比较运算符==和===和!=和!===的区别理解

JavaScript中比较运算符== 和===和!=和!==

 JavaScript允许对任意数据类型做比较,如果操作数相等则返回true,否则返回false。   

分析下面代码你将明白四者具体区别:

<script language="javascript">
 var x=5;
 document.write(
(x===5)+"<br>");//结果为true
 document.write((x==="5")+"<br>");//结果为false
  document.write((x==5)+"<br>");//结果为true
  document.write((x=="5")+"<br>");//结果为true

document.write((x!=5)+"<br>");//结果为false
  document.write((x!="5")+"<br>");//结果为false
 document.write((x!==5)+"<br>");//结果为false
 document.write((x!=="5")+"<br>");//结果为true

ocument.write((x!=4)+"<br>");//结果为true
  document.write((x!="4")+"<br>");//结果为true
 document.write((x!==4)+"<br>");//结果为true<strong></strong>
 document.write((x!=="4")+"<br>");//结果为true
  </script>

  1."==="和”!==“运算符也称为严格相等运算符,它用来检测两个操作数是否严格相等或者不相等。如果数据类型和数值都相等才为true,否则为false。

 2."=="运算符称为相等运算符,用来检测两个操作数是否相等,比较宽松,数据类型不相等,如国数据值相等,结果也为true。

 如果一个值是null,另一个是undefined,则他们相等。

 如果一个值是数字,另一个是字符串,比较时现将字符串转换为数字,然后使用转换后的值比较

   如果其中一个值是true,则将其转换为1再进行比较。

  因为在使用过程中"=="会出现类型转换,所以为避免在使用"=="过程中出现意想不到的类型转换而影响比较结果,建议除特殊情况外全部用"==="。

  

  另一个特殊是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

NaN===NaN;//false

  唯一能判断NaN的方法是通过isNaN()函数:

isNaN(NaN);//true

  最后要注意浮点数的相等比较:

1/3===(1-2/3);//false

这其实不是JavaScript的设计缺陷。浮点数在运算过程中可能会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:

Math.abs(1/3-(1-2/3))<0.0000000001;//true

猜你喜欢

转载自blog.csdn.net/weixin_45147894/article/details/106276180