ES6 Object.is()

跟風遠走 提交于 2019-12-26 07:56:04

ES5 中判断两个值是否相等:

(1)相等运算符(==)

(2)严格相等运算符(===)

这两个方法各自有各自的特点:

F12打开chrome调试器,如下例子:

5=="5"
//true

可以看到:相等运算符(==)会对比较的两个值进行类型转换。

5==="5"
//false

严格相等运算符(==)不会对比较的两个值进行类型转换。

NaN === NaN
//false

但是,使用严格相等运算符(==),NaN 不等于自身。

+0 === -0
//true

ES6 Object.is()

ES6 添加了新方法Object.is来比较两个值严格相等。

定义:Object.is 方法判断两个值是否是相同的值。
语法:Object.is(value1, value2)
value1:第一个需要比较的值
value2:第二个需要比较的值

返回值:表示两个参数是否相同的 布尔值 。

它与严格比较运算符(===)基本一致,不同之处只有两个:
(1)+0不等于-0;
(2)NaN等于自身。

Object.is()方法可应用于:

(1)比较两个字符串。

(2)比较两个数字。

(3)比较两个对象。

Object.is('abc','abc')
//true
Object.is('abc','abcd')
//false
Object.is(window,window)
//true
Object.is([],[])
//false
Object.is({},{})
//false
Object.is(+0,-0)
//false
Object.is(0,-0)
//false
Object.is(0,+0)
//true
Object.is(NaN,NaN)
//true

Object.is()方法和“==”运算符之间的区别:

+0 == -0
//true
+0 === -0
//true
Object.is(+0,-0)
//false

可以看到:

== 和 === 运算符将数字值“+0”和“-0”视为相等,而Object.is()方法则将它们视为不相等。

NaN == NaN
//false
NaN === NaN
//false
Object.is(NaN,NaN)
//true

可以看到:

如果两个值都是数字并且都是“NaN”,== 和 === 将其视为不相等;而Object.is()方法则将它们视为相等。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!