Object.is
Object.is()办法判断两个值是否是雷同的值Object.is()
判断两个值是否雷同。如果下列任何一项成立,则两个值雷同:
- 两个值都是
undefined
- 两个值都是
null
- 两个值都是
true
或者都是false
- 两个值是由雷同个数的字符依照雷同的程序组成的字符串
- 两个值指向同一个对象
-
两个值都是数字并且
- 都是正零
+0
- 都是负零
-0
- 都是
NaN
- 都是除零和
NaN
外的其它同一个数字
- 都是正零
这种相等性判断逻辑和传统的 ==
运算符所用的不同,==
运算符会对它两边的操作数做隐式类型转换(如果它们类型不同),而后才进行相等性比拟,(所以才会有相似 "" == false
为 true
的景象),但 Object.is
不会做这种类型转换。
这与 ===
运算符也不一样。===
运算符(和 ==
运算符)将数字值 -0
和+0
视为相等,并认为 Number.NaN
不等于NaN
。