美文网首页
JavaScript 之 == 与 === 的区别

JavaScript 之 == 与 === 的区别

作者: 涅槃快乐是金 | 来源:发表于2022-01-24 22:45 被阅读0次

宽松相等(==)与严格相等(===)二者都是用于判断两个值是否相等,但它们在判断条件上有很大的区别,== 允许在相等比较中进行强制类型转换,而===不允许。==和===都会检测操作数的类型,区别在于操作数类型不同时,它们的处理方式不同。

如何解释

  • 错误的解释:“==检查值是否相等,===检查值和类型是否相等。” 在此解释中,===似乎比==做的事情更多,因为它还要检查值的类型。

  • 正确的解释:“==允许在相等比较中进行隐式强制类型转换,而===不允许。” 在此解释中,==的工作量更大一些,因为如果值的类型不同,还需要进行强制类型转换。

如何转换

  • 值类型相同:==和===使用相同的算法,所以除了JS引擎实现上的细微差别之外,它们之间并没有什么不同。

  • 值的类型不同:我们就需要考虑是否有强制类型转换的必要,若有就用==,没有就用===,不用在乎性能。

特殊例子

假值相等比较
null与undefined

在 == 中 null 和 undefined 相等(它们与其自身相等),除此之外其他值都不存在这种情况。即,在 == 中 null 与 undefined 是一回事,可以相互进行隐式强制类型转换。

布尔与数字、字符串
Number(true) = 1
Number(false) = 0
1 == true;    // true
0 == false;   // true
"1" == true; //true
"0" == true; //false
"0" == false; //true
if("0"){
  console.long("0");//能输出
}
if(0){
  console.long("0");//不能输出
}

相关文章

网友评论

      本文标题:JavaScript 之 == 与 === 的区别

      本文链接:https://www.haomeiwen.com/subject/pkeihrtx.html