JS比较运算符:从坑点速记到实战口诀

下面把 JS 里所有比较运算符按"长相"→"功能"→"坑点"→"记忆口诀"四步拆开讲,看完就能当"人肉 linter"。


  1. 相等族(宽松)
    ==
    功能:先强制类型转换 再比较。
    坑点:
    • 0 == false // true
    • '' == false // true
    • ' \t\r\n' == 0 // true
    • null == undefined // true,且仅此一对"特权"
      口诀:
      "== 带隐式,五条怪规则:布尔转数、字符串转数、null 只约 undefined、对象转原始、NaN 谁都不认。"

  1. 相等族(严格)
    ===
    功能:不做类型转换,类型不同直接 false
    坑点:
    • NaN === NaN // false(唯一自己不等于自己)
    • +0 === -0 // true(符号位被忽略)
      口诀:
      "=== 不带戏,类型不同就枪毙。"

  1. 不等族
    !=!==
    功能:分别对应 =====逻辑反
    坑点:
    • 5 != '5' // false(因为先转类型后相等)
    • 5 !== '5' // true
      口诀:
      "叹号在前,就是取反,宽松严格各自算。"

  1. 顺序族(数字语义)
    < > <= >=
    功能:
    • 两边都是字符串 → 按 Unicode 码点逐位比(字典序)。
    • 否则 → 两边都先转数字 再比。
      坑点:
    • '10' > '2' // false(字符串比,'1'<'2' 直接出局)
    • '10' > 2 // true(转数字 10>2)
    • null >= 0 // true(null 转 0)
    • undefined >= 0 // false(undefined 转数字得 NaN,任何比较都 false)
      口诀:
      "同为字符串才字典,其余一律先转数;null 变 0,undefined 变 NaN,NaN 出马全 false。"

  1. 对象比较彩蛋
    功能:对象先调用 ToPrimitive(先 valueOftoString),变成原始值后再走上面规则。
    例子:

    js 复制代码
    var a = [1];
    var b = [2];
    a < b   // true  → [1].valueOf() 得 '1',再转数字 1 < 2

  1. NaN、±0 小结表

    表达式 结果 原因
    NaN == NaN false IEEE 754 规定
    +0 == -0 true 同值零
    Object.is(NaN, NaN) true ES6 提供的"最严格"比较
    Object.is(+0, -0) false 可区分符号零

速记总口诀

"三等不带戏,双等带隐式;

字符串字典序,别的先转数;

null 特权遇 undefined,NaN 出现全是拒;

对象先拆箱,比较不迷路。"

相关推荐
放下华子我只抽RuiKe529 分钟前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
一只大袋鼠31 分钟前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP1 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
XinZong1 小时前
OpenClaw 实现双重心跳(Heartbeat)+ clawreach虾聊项目实现
javascript
web3.08889991 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
один but you2 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
还有多久拿退休金3 小时前
一张栈的图,治好你面试答不出 script 阻塞的病
前端·javascript
MY_TEUCK3 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
zithern_juejin3 小时前
原型与原型链
javascript
测试员周周3 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest