严格相等运算符(Strict Equality Comparison)===
ECMA-262的中定义了 === 的比较规范,我们可以通过规范来加深对此的理解
http://www.ecma-international...
总结下来:就两点吧
1. 如果类型不一样,就直接返回false
2. 类型一样,除了数字类型,只要值一样,就返回true。数字中存在一个比较特殊的值(NaN), 只要
两边只要存在一个NaN就返回false。需要注意。
== 相等运算符(Abstract Equality Comparison)
ECMA-262中定义了 == 的比较规范,我们可以通过规范来加深对此的理解
http://www.ecma-international...
== 是在面试中很容易遇到或者工作中容易出错误的地方。我们需要好好掌握它的规范,当然,使用 === 替换 == 是一个好习惯。但是我们还是需要对此好好掌握(知其然,还需要知其所以然)
总结下来:有下面几点
1. null、undefined对比返回true,而其他类型对比返回false
2. String、Boolean、Number类型转换成为Number,然后进行比较。转换规则可以参考
https://segmentfault.com/a/1190000013262657
3. Object类型和基本类型比较,Object类型通过valueOf和toString两个方法, 获取到基本类型,然后按照规则2进行比较
4. 相同类型就按照严格相等运算(===)来比较。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。