在 JavaScript 中,值的比较是一个基础但重要的概念,主要有以下几种比较方式:
5 == '5' // true (字符串'5'转换为数字5)true == 1 // true (true转换为1)null == undefined // true5 === '5' // falsetrue === 1 // falsenull === undefined // false> 大于< 小于>= 大于等于<= 小于等于这些运算符也会进行类型转换:
'10' > 5 // true (字符串'10'转换为数字10)
'10' < '5' // true (字符串比较,按字符顺序比较)
NaN 与任何值(包括自己)比较都是 false
NaN == NaN // false
NaN === NaN // false
需要使用 isNaN() 函数检测
null 和 undefined 只与彼此相等
null == undefined // true
null === undefined // false
对象比较的是引用,不是内容:
const obj1 = { a: 1 };
const obj2 = { a: 1 };
const obj3 = obj1;
obj1 == obj2 // false
obj1 === obj2 // false
obj1 == obj3 // true
obj1 === obj3 // true
总是使用严格相等(===) 避免类型转换带来的意外行为
比较对象时,如果需要比较内容,可以:
JSON.stringify() 转换为字符串比较_.isEqual() 等工具函数处理 NaN 时总是使用 isNaN() 或 Number.isNaN()
// 推荐
if (value === expectedValue) { ... }
// 不推荐
if (value == expectedValue) { ... }
理解 JavaScript 的值比较机制对于编写可靠和可预测的代码至关重要。
热门推荐:
0