JavaScript 比较运算符
比较运算符用于比较两个值,返回布尔值 true 或 false,是条件判断的基础。
基本比较运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
== | 相等(类型转换) | 5 == '5' // true |
=== | 严格相等(无类型转换) | 5 === '5' // false |
!= | 不相等(类型转换) | 5 != '5' // false |
!== | 严格不相等 | 5 !== '5' // true |
> | 大于 | 5 > 3 // true |
< | 小于 | 5 < 3 // false |
>= | 大于等于 | 5 >= 5 // true |
<= | 小于等于 | 5 <= 3 // false |
相等比较
JavaScript
// 宽松相等 ==(会进行类型转换)
console.log(5 == '5'); // true
console.log(0 == false); // true
console.log(null == undefined); // true
console.log('' == 0); // true
// 严格相等 ===(不进行类型转换)
console.log(5 === '5'); // false
console.log(0 === false); // false
console.log(null === undefined); // false
console.log('' === 0); // false
大小比较
JavaScript
// 数字比较
console.log(5 > 3); // true
console.log(5 >= 5); // true
console.log(3 < 5); // true
console.log(3 <= 3); // true
// 字符串比较(按 Unicode 编码)
console.log('a' < 'b'); // true
console.log('abc' < 'abd'); // true
console.log('A' < 'a'); // true(大写字母编码更小)
// 不同类型比较(会转为数字)
console.log('10' > 5); // true('10' 转为 10)
console.log('abc' > 5); // false('abc' 转为 NaN)
特殊值比较
JavaScript
// NaN 的特殊性
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
console.log(Number.isNaN(NaN)); // true(检测 NaN)
// null 和 undefined
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(null > 0); // false
console.log(null == 0); // false
console.log(null >= 0); // true(特殊:null 转为 0)
// 对象比较(比较引用)
const obj1 = { a: 1 };
const obj2 = { a: 1 };
const obj3 = obj1;
console.log(obj1 == obj2); // false(不同引用)
console.log(obj1 === obj2); // false
console.log(obj1 === obj3); // true(同一引用)
类型转换规则
JavaScript
// 字符串与数字比较:字符串转数字
console.log('10' > 5); // true
console.log('10' == 10); // true
// 布尔值参与比较:转为数字(true=1, false=0)
console.log(true == 1); // true
console.log(false == 0); // true
console.log(true > 0); // true
// 对象转原始值
console.log([1] == 1); // true([1].valueOf().toString() = '1')
console.log([2] > 1); // true
注意事项
- 推荐使用
===和!==进行严格比较,避免类型转换带来的意外NaN不等于任何值,包括它自己- 对象比较的是引用地址,不是内容
JavaScript
// 推荐写法
if (value === 5) { } // 严格比较
if (value !== null) { } // 严格比较
// 避免的写法
if (value == 5) { } // 可能因类型转换产生意外结果
if (value != null) { } // 同样会匹配 undefined
要点总结
===严格相等:比较值和类型,推荐使用==宽松相等:会进行类型转换,容易产生意外结果- 大小比较时,不同类型会转为数字再比较
NaN不等于任何值,使用Number.isNaN()检测- 对象比较的是引用,两个不同对象即使内容相同也不相等
📝 发现内容有误?点击此处直接编辑