等于和绝对等于的区别

1. ==(等于)

  • 特点:比较时会自动进行类型转换(隐式转换),尝试将两边的值转为相同类型后再比较。
  • 规则
    • 如果类型相同,直接比较值。
    • 如果类型不同,按以下规则转换:
      • 数字 vs 字符串:字符串转数字。
      • 布尔值 vs 非布尔值:布尔值转数字(true1false0)。
      • 对象 vs 基本类型:调用对象的 valueOf()toString() 转为基本类型。
      • nullvsundefined:视为相等。

2. ===(绝对等于/严格等于)

  • 特点:不进行类型转换,直接比较类型和值。
  • 规则
    • 如果类型不同,直接返回 false
    • 如果类型相同,再比较值。

|-----------------------|------------------|---------------------|---------------------|
| 场景 | ==****(等于)结果 | ===****(绝对等于)结果 | 原因说明 |
| 5 == '5' | true | false | == 会转换类型为数字再比较 |
| 0 == false | true | false | false 转为 0 |
| '' == 0 | true | false | 空字符串转为 0 |
| null == undefined | true | false | 特殊规则 |
| NaN == NaN | false | false | NaN 不等于任何值,包括自身 |
| {} == {} | false | false | 对象比较的是引用地址 |

相关推荐
山河木马14 小时前
矩阵专题3-怎么创建投影矩阵(uProjectionMatrix)
javascript·webgl·计算机图形学
泯泷16 小时前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷16 小时前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
朦胧之17 小时前
页面白屏卡住排查方法
前端·javascript
犇驫聊AI18 小时前
Chrome DevTools MCP + Claude Code 自定义skills生成接口代码生成器
前端·javascript
kyriewen18 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
用户298698530141 天前
在 React 中使用 JavaScript 将 Excel 转换为 SVG
前端·javascript·react.js
labixiong1 天前
手写Promise--微任务、静态方法、async/await 全搞懂(三)
前端·javascript
铁皮饭盒1 天前
3行代码搞定页面截图,Bun.WebView真的简单
javascript
kyriewen2 天前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试