当前位置: 首页 > article >正文

==,===,Object.is的区别

在 JavaScript 中,=====Object.is 都用于比较值,但它们的行为和比较规则有显著的不同。以下是它们之间的区别:

1. ==(相等运算符)

  • 类型转换== 运算符在比较之前会进行类型转换(隐式转换)。
  • 规则
    • 如果两个值的类型不同,JavaScript 会尝试将它们转换为相同类型再进行比较。
    • 对于 nullundefined,它们是相等的。
    • 数字与字符串的比较,字符串会被转换为数字。

示例

console.log(2 == "2");          // true,"2" 被转换为数字 2
console.log(null == undefined);  // true
console.log(0 == false);        // true,false 被转换为 0
console.log(1 == true);         // true,true 被转换为 1

2. ===(全等运算符)

  • 无类型转换=== 运算符在比较时不会进行类型转换。只有在两个值的类型相同且值相等时,才会返回 true
  • 规则
    • 如果类型不同,直接返回 false

示例

console.log(2 === "2");        // false,类型不同
console.log(2 === 2);          // true
console.log(null === undefined); // false,类型不同
console.log(0 === false);      // false,类型不同

3. Object.is

  • 严格比较Object.is 方法用来判断两个值是否为同一值,它与 === 类似,但在某些情况下表现得更严格。
  • 规则
    • 对于 NaNObject.is(NaN, NaN) 返回 true,而 NaN === NaN 返回 false
    • 对于 +0-0Object.is(+0, -0) 返回 false,而 +0 === -0 返回 true

示例

console.log(Object.is(2, 2));             // true
console.log(Object.is(2, "2"));           // false
console.log(Object.is(NaN, NaN));         // true
console.log(Object.is(+0, -0));           // false
console.log(Object.is(null, undefined));  // false

总结

  • ==:会进行类型转换,可能导致意外结果。
  • ===:严格比较,不进行类型转换。
  • Object.is:更严格的比较方法,处理 NaN+0/-0 的情况。

通常推荐使用 ===Object.is 进行比较,以避免由于隐式转换引起的潜在错误。


http://www.kler.cn/a/379326.html

相关文章:

  • 常用的 Lambda 表达式案例解析
  • net core Autofac 替换默认的服务容器 DI,微软自动的容器 不支持命名选项的
  • Spring1(初始Spring 解耦实现 SpringIOC SpringDI Spring常见面试题)
  • 04字符串算法/代码随想录
  • 来了解一下!!!——React
  • thrift rpc 四种类型的服务端的实现详细介绍
  • 春日启航:海滨学院班级记忆的数字化之旅
  • shell脚本案例:创建用户和组
  • SpringBoot抗疫物资管理系统:技术架构解析
  • 使用 async/await 时未捕获异常的问题及解决方案
  • spark集群模式-standalone的配置和使用
  • EJEAS S2滑雪对讲机全球发布会圆满举办,为滑雪市场注入新活力
  • 在Ubuntu上安装TensorFlow与Keras
  • Golang | Leetcode Golang题解之523题连续的子数组和
  • WPF中如何简单的使用MvvmLight创建一个项目并进行 增删改查
  • 【屏幕驱动移植记录】
  • C#如何封装将函数封装为接口dll?
  • 集成学习(2)
  • 前端学习-盒子模型(十八)
  • TensorRT-LLM笔记
  • 数据结构:总览
  • 九,数据类型存储
  • Kubernetes——part9-2 kubernetes集群java项目上云部署
  • 大模型微调
  • ubuntu离线部署ollama
  • Java毕业设计-基于微信小程序的校园二手物品交易系统的实现(V2.0)