== 和 === 的区别
小于 1 分钟
1. ==(宽松相等/非严格相等)
会进行类型转换:如果两边的数据类型不同,JavaScript 会先尝试将它们转换为相同类型,再比较值。
比较规则示例:
5 == '5' // true(字符串 '5' 转换为数字 5)
true == 1 // true(true 转换为 1)
null == undefined // true(特殊规则)
'0' == false // true(两边都转换为数字 0)2. ===(严格相等)
不会进行类型转换:要求类型和值都完全相同才会返回 true。
比较规则示例:
5 === '5' // false(数字 ≠ 字符串)
true === 1 // false(布尔值 ≠ 数字)
null === undefined // false(不同类型)
'0' === false // false(字符串 ≠ 布尔值)关键区别
| 情况 | == 结果 | === 结果 | 原因 |
|---|---|---|---|
5 和 '5' | true | false | == 会隐式转换类型 |
0 和 false | true | false | == 将两者转为数字 0 |
null 和 undefined | true | false | == 的特殊规则(视为相等) |
'1' 和 true | true | false | == 将 '1'→1, true→1 |