你应该在相等的时候用Object.is()

作者 : 开心源码 本文共938个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共161人阅读

==

我们都知道 JavasSript 是弱类型的,并且当我们使用 == 作比较时,在少量情况下因为类型转换或者者说“把两个操作数中的一个转换成另一个,而后在比较”,会出现意想不到的结果。

// 0 == ' '           //true// null == undefined  //true// [1] == true        //trueconsole.log('0 == " "', 0 == ' '); // trueconsole.log('null == undefined', null == undefined); // trueconsole.log('[1] == true', [1] == true); // true

===

因而 JavaScript 中给我们提供了全等操作符 ===, 它比不全等操作符更加严格并且不会发生类型转换。但是用 === 来进行比较并不是最好的处理方案。你可能会得到:

 // NaN === NaN //false console.log('NaN === NaN', NaN === NaN); // false

Object.is()

好消息是 ES6 中提供了新的 Object.is() 方法,它具备 === 的少量特点,而且更好、更准确,在少量特殊案例中体现的很好:

// Object.is(0 , ' '); //false// Object.is(null, undefined); //false// Object.is([1], true); //false// Object.is(NaN, NaN); //trueconsole.log('Object.is(0 , " ")', Object.is(0, ' ')); // falseconsole.log('Object.is(null , undefined)', Object.is(null, undefined)); // falseconsole.log('Object.is([1] , true)', Object.is([1], true)); // falseconsole.log('Object.is(NaN , NaN)', Object.is(NaN, NaN)); // true

Mozilla 团队并不认为 Object.is 比 === 更加“严格”,他们说我们应该考虑的是这个方法如何解决 NaN, -0 和 +0。但是总的来说, 我认为它在实际应用中是一个很好的实践。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 你应该在相等的时候用Object.is()

发表回复