在相等比较中使用 Object.is()让结果更准确
当在JavaScript
中比较两个值时,可能习惯于使用==
或===
,我更喜欢后者,因为==
存在强制类型转换。但是===
也不完全准确。
比较NaN
需要使用isNaN()
方法才可以正确检测 NaN。
ES6中引入了Object.is()
方法来弥补全等运算符的不准确运算。这个方法接收两个参数,如果这两个参数类型相同且具有相同的值,则返回true
。
对于Object.is()
方法来说,其运行结果大部分情况中与===
运算符相同,唯一区别在于+0
和-0
被识别为不相等并且NaN
与NaN
等价。
放一张对比图:
参考
- 深入理解ES6 – 作者: 【美】Nicholas C. Zakas
- 为什么你应该在相等比较中使用 Object.is()