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

JavaScript中两个独立声明的同值原始变量使用===比较为什么返回true

JS全等运算返回true的原因

核心差异在于JS的===运算符对不同类型的变量采用不同的比较规则:

  • 对于原始类型(Number、String、Boolean、null、undefined、Symbol、BigInt):直接对比变量存储的值本身,只要值相同就返回true,和变量的声明方式、内存存储位置无关。
  • 对于引用类型(Object、Array、Function等):对比的是变量指向的内存地址,只有两个变量指向堆内存中的同一个对象时才会返回true。

你遇到的场景中,数字5是Number类型的原始值,因此两个独立声明的变量只要存储的数值都是5,===对比就会返回true,你之前的误解是把引用类型的比较规则套用到了原始类型上。

可以参考引用类型的反例辅助理解:

const arr1 = [1,2,3]
const arr2 = [1,2,3]
console.log(arr1 === arr2) // 输出 false,两个数组都是独立创建的引用类型,内存地址不同

你能理解的第二种赋值场景,本质是把abc存储的内容直接赋值给bcd:如果是原始类型就是拷贝值,引用类型就是拷贝内存地址,所以不管哪种类型这么写===都会返回true,你的原有理解是正确的。

内容的提问来源于stack exchange,提问作者Shivam Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:24:00