default argument value is mutable翻译_JavaScript中的Object.is()与严格相等运算符应该如何使用?...

766d5a179a05f05914a4f3f656d6b9d5.png

大家好,我来了!本期为大家带来的Web前端学习知识是”JavaScript中的Object.is()与严格相等运算符应该如何使用?“,喜欢Web前端的小伙伴,一起看看吧!

肚等式运算符严格检查两个值是否相同:

1 === 1; // => true 
1 === '1'; // => false 
1 === true; // => false

但是,ES2015规范带来了Object.is(),其行为与严格的相等运算符几乎相同:

Object.is(1, 1); // => true 
Object.is(1, '1'); // => false 
Object.is(1, true); // => false

主要问题是何时使用Object.is()代替严格的相等性检查?让我们找出答案。

1.技巧相等检查运算符

首先,让我们快速刷新严格相等运算符的工作方式。

严格相等性检查运算符计算true两个值的类型相同并保持相同的值。

例如,以下原始值相等,因为它们是相同的类型且具有相同的值:

1 === 1; // => true 
'abc' === 'abc'; // => true 
true === true; // => true 
null === null; // => true 
undefined === undefined; // => true

严格相等运算符不执行运算符的类型强制。即使运算符具有合理的相同值,但是尽管类型不同,它们也不是严格相等的:

'1' === 1; // => false 
1 === true; // => false 
null === undefined; // => false

对对象执行严格相等检查时,对象仅与自身严格相等:

const myObject = { prop: 'Value' }; 
myObject === myObject; // => true

即使2个对象具有完全相同的属性和值,严格相等运算符也会将它们视为不同的值:

const myObject1 = { prop: 'Value' }; 
const myObject2 = { prop: 'Value' }; 
myObject1 === myObject2; // => false

以上比较方案在中的工作原理完全相同Object.is(valueA, valueB)

严格相等检查和严格平等检查之间的区别Object.is()在于NaN负零-0的处理方式和方式。

首先,NaN(Not A Number)不严格等于任何其他值,即使是另一个值NaN

NaN === NaN; // => false 
NaN === 1; // => false

其次,全等运算符不区分-0来自+0

-0 === +0; // => true

严格相等运算符使用严格相等比较算法。

2. Object.is()

Object.is(valueA, valueB) 以与严格相等运算符相同的方式检查相等性的参数,但有两个区别。

首先,NaN等于另一个NaN值:

Object.is(NaN, NaN); // => true 
Object.is(NaN, 1); // => false

其次,Object.is()区分-0+0

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

Object.is()与严格相等运算符相反,使用相同值比较算法。

3.总结

在大多数情况下,严格相等运算符应为比较值的默认方式。

如果您想直接检查NaN值或在负零和正零之间进行更严格的区分,那么这Object.is()是一个不错的选择。

Object.is()可以用作比较值的功能方法,例如在功能编程中。

原著作者:德米特里·帕夫鲁汀

文章来源:国外

文章链接:

Dmitri Pavlutin Blog​dmitripavlutin.com
1d542ae73a402d4fd5d11d743d8e9fa9.png

PS:原著文章内容为英文版本,建议使用360极速浏览器进行翻译阅读。

喜欢我文章的朋友们,点个关注留个赞呗!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值