js中常见的比较符号为==和===,其中===较==更为严格,但是对于+0和-0来说,即使===也是无法分辨的,那么该怎么区分呢?

利用1/+0和1/-0来区别

+0和-0有一些很奇特的属性,1/+0为Infinite,1/-0为-Infinite,因此我们可以用来区分+0和-0。

利用Object.defineObject

在使用Object.defineObject定义属性的时候,如果没有设置默认的可枚举性、可配置性、可写性,那么都为false,如果此时给相同的属性名赋值就会报错,可以利用这个特性来查看。

在es6中,对应的就是Reflect.defineProperty方法替换上面的try{}catch{}。

Object.is

这个是最简单判断-0和+0的,Object.is(-0,+0);返回false。

不过注意,Object.is(NaN,NaN)为true。

其他文章

0
我要评论

评论

返回
×

我要评论

回复:

昵称:(昵称不超过20个字)

图片:

提交
还可以输入500个字