==和===以及Object.is()

在JavaScript中,==运算符会进行类型转换以尝试使两边相等,可能导致非预期的结果,如NaN!=NaN。相比之下,===运算符更严格,不进行类型转换,但存在NaN!==NaN的问题。为解决这些问题,JavaScript引入了Object.is()方法,它正确处理了NaN和+0/-0的情况。
摘要由CSDN通过智能技术生成

==运算符

在其他的语言中,我们通常使用==来判断两个数是否相等。在js中,==运算符会尽量让两者是相等的。它比较的是truly变量和falsely变量。

truly变量和falsely变量

truly变量:!!a===true。
falsely变量:!!a(三等运算符)false。
注意:falsely变量可以理解。为不存在的事物:包括(‘’,null,undefined,NaN,false)其余的都为一个truly变量。==运算符的比较会自动做类型的转换。
if语句和while语句比较的都是truly变量或falsely变量。

let obj={};
let a=1;
let b="";
let c=null;
if(obj)
      {
         console.log("true");
      }
      else{
         console.log("false");
      }//输出true

      if(c)
      {
         console.log("true");
      }
      else{
         console.log("false")
      }//输出false

      if(b)
      {
         console.log("true");
      }
      else{
         console.log("false");
      }//输出false

===运算符

由于会进行类型的转换,所以js引入更为严格的比较运算符,这个运算符为===运算符。当运算符的两边为不同类型的数据类型的时候。它们会判断为false。但是这一个运算符也出现了一个弊端,这个弊端就是NaN=NaN为false。然后+0和-0判断为false.

Object.is()

为了解决上述的漏洞,引入了Object.is()的方法,Object.is(NaN,NaN)结果为true,Object.is(+0,-0)结果为false。Object.is()是更为严格的判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值