文章目录
- 一、前言
- 二、严格相等运算符 (===)
- 三、宽松相等运算符 (==)
- 四、推荐做法
- 五、特殊情况
一、前言
在 JavaScript
中,===
和 ==
都是比较运算符,但它们在比较时有重要区别:
二、严格相等运算符 (===)
- 不进行类型转换
- 只有当两个操作数的值和类型都相同时才返回
true
- 也称为"严格相等"或"恒等运算符"
5 === 5 // true
'5' === 5 // false (类型不同)
true === 1 // false
null === undefined // false
三、宽松相等运算符 (==)
- 会进行类型转换
- 如果类型不同,会尝试将操作数转换为相同类型后再比较
- 也称为"抽象相等"
5 == 5 // true
'5' == 5 // true (字符串转换为数字)
true == 1 // true (布尔值转换为数字)
null == undefined // true
四、推荐做法
在大多数情况下,推荐使用 ===
,因为:
- 它更严格,避免隐式类型转换带来的意外行为;
- 代码意图更清晰;
- 性能稍好(不需要进行类型转换);
五、特殊情况
使用 ==
时,JavaScript
的类型转换规则有时会令人困惑:
'' == '0' // false
0 == '' // true
0 == '0' // truefalse == 'false' // false
false == '0' // truefalse == undefined // false
false == null // false
null == undefined // true
理解这些差异有助于编写更可靠、更易维护的 JavaScript
代码。