作为两个量比较的三种方式“==”,“===”和“Object.is(a,b)”有一定区别,如下(具体见MDN):
(1)Object.is(a,b)
Object.is(a,b) 是ECMA标准中的 SameValue的实现,比较运算不会进行强制的类型转换(如==),
返回true的情况如下(其他情况返回false,即不等):
(2)==
比较前,会进行两个数值的强制类型转换(字符串和数值类型),转换为相同类型然后比较;
比较不会区分 +0 和 -0,且认为两个NaN不相等。
(3)===
该比较不会区分 +0 和 -0,且认为两个NaN不相等。
注:== 和 ===的区别主要是是否会在转换前进行强制类型转换。