Object.is和==,===

  1. ES5比较值得问题:
  • “==”
    会进行数据类型转换
  • “===”
    +0 === -0 // false
    NaN === NaN // false
  1. ES6提出同值相等算法,"Same-value equality",用来比较两个值是否严格相等
Object.is({},{}); // false
Object.is(+0, -0); // false
Object.is(NaN,NaN); // true
  1. 使用ES5实现Object.is
Object.defineProperty(Object, 'is', {
  value: function(x,y){
    if(x === y){
      // 不能让 + 0 === -0
      return x !== 0 || 1/x === 1/y
    }

    return x!==x && y !== y;
  },
  configurable: true,
  enumerable: false,
  writable: true
})```
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在es5中我们比较两个值是否相等,用两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有自己的缺点,...
    聆听璇律阅读 7,212评论 0 0
  • ES6 提供了Object.is()用于比较两个参数是否相等,与 === 基本相似,但有两点不同。 1、+0 不等...
    樱木夜访流川枫阅读 1,355评论 0 0
  • IEEE754 浮点数运算标准 是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。...
    清水芦苇阅读 3,180评论 0 0
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,477评论 0 8
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6允...
    呼呼哥阅读 7,982评论 0 2

友情链接更多精彩内容