ES中的 == 和 === 都很熟悉了。
两者的区别:
== 在类型相同时,使用 === 判断,=== 在类型不同时直接
false== 会在类型不同时,发生隐式转换
规则如下:
(1)一个
null,一个undefied,那么true(2)一个字符串,一个数值,会把字符串转成数值之后再进行比较
熟悉ES6不会对Object.is()陌生
NaN独白:懂我的人终于出现(≧▽≦)/啦
1  | Object.is(NaN, NaN) // true  | 
在js中我们一般认为正负0是不相等的,然而===情况下NaN不等于NaN,+0等于-0
简单实现
1  | if (!Object.is) {  | 
这里重点提到ES标准中的 SameValueZero 算法
1  | const s = new Set()  | 
和Object.is()比较算法的区别就在 +0 和 -0是一样的。 
1  | const a = [0, NaN]  | 
可以看出includes也是基于 SameValueZero 来比较的。