ECMA6 002 Object.is()

Posted anduyinglufei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECMA6 002 Object.is()相关的知识,希望对你有一定的参考价值。

ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身.

Object.is在所有环境中,只要两个值是一样的,它们就应该相等。

============================================================

Object.is 和 相等运算符(==)

console.log(0==false);//true
console.log(Object.is(0,false));//false

Object.is 和 严格相等运算符(===)

console.log(NaN===NaN);//false
console.log(Object.is(NaN,NaN));//true
console.log(+0===-0);// true
console.log(Object.is(+0,-0));//false

tips: 新手可以简单理解就是Object.is 更加专注于表面像的 形式比较 。。。

console.log({}=={}); //false 因为每个对象在内存空间的地址不一样
console.log({}==={});//false 因为每个对象在内存空间的地址不一样
console.log(Object.is({},{}));//false 因为每个对象在内存空间的地址不一样

 







以上是关于ECMA6 002 Object.is()的主要内容,如果未能解决你的问题,请参考以下文章

-Mapping persistent classes-002identity详解

ecma6 是不是仍然需要转译器并做出反应?

ECMA6--目录

react-router中的ECMA6传播参数

ECMA6 中 nameFunction() 和 nameFunction () => 的区别

为啥升级到 Angular 7 Ecma6 不起作用?