You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中Triple equal(三等号)是否优先比较类型再比较值?

三等号===的比较顺序说明

===执行严格相等比较时,会优先校验两个操作数的类型,类型不一致直接返回false,不会进入后续的值比较环节。

完整的比较流程如下:

  • 第一步:类型校验
    对比两个操作数的内置类型是否完全一致,只要类型不同直接终止比较,返回false
  • 第二步:同类型下的值校验
    类型一致时,再根据对应类型的规则判断值是否相等:
    • 若为undefined/null类型:直接返回true(同类型下这两类仅存在自身一个值)
    • 若为数字类型:先判断是否存在NaN,只要有一个操作数是NaN就返回false;再判断数值是否相等,+0与-0视为相等
    • 若为字符串类型:逐位对比字符编码,长度不同或任意位置字符编码不同则返回false
    • 若为布尔类型:仅两个值同为true或同为false时返回true
    • 若为引用类型(对象、数组、函数等):对比内存引用地址,仅指向同一个实例时返回true,内容完全相同但地址不同也会返回false

可参考以下示例验证规则:

// 类型不同直接返回false,不会比较值
1 === '1' // false
true === 1 // false
null === undefined // false

// 类型相同才会对比值
2 === 2 // true
'hello' === 'hello' // true
[] === [] // false 两个数组引用地址不同

内容的提问来源于stack exchange,提问作者Muhammad Arqam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:00:02