前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端面试 【JavaScript】— Object.is和=== 有什么区别?

前端面试 【JavaScript】— Object.is和=== 有什么区别?

作者头像
越陌度阡
发布2021-11-17 18:14:02
3550
发布2021-11-17 18:14:02
举报

ES5 比较两个值是否相等:相等运算符(==)和 严格相等运算符(===)。

缺点:

==:自动转换数据类型;

===:NaN不等于自身,以及+0等于-0。

ES6新的方法Object.is 来比较两个值严格相等,它与严格比较运算符(===)基本一致,不同之处只有两个:一是+0不等于-0,二是NaN等于自身。以下是源码实现:

代码语言:javascript
复制
function is(x, y){ 
  if (x === y) {
    // 运行到1/x === 1/y的时候x和y都为0,但是1/+0 = +Infinity, 1/-0 = -Infinity, 是不一样的
    return x!==0 || y!==0|| 1/x===1/y;  
  } else {
    // NaN === NaN 是false,这是不对的
    // 这里做一个拦截,x!==x,那么一定是 NaN, y同理两个都是NaN的时候返回true 
    return x!==x && y!==y;  
  }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档