前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【点滴】JavaScript中的 Object.is() 与 === 运算符有什么区别?

【点滴】JavaScript中的 Object.is() 与 === 运算符有什么区别?

作者头像
疯狂的技术宅
发布于 2021-03-16 03:17:57
发布于 2021-03-16 03:17:57
37800
代码可运行
举报
文章被收录于专栏:京程一灯京程一灯
运行总次数:0
代码可运行

前端点滴front-end tips


  • 分类:JavaScript | Object, Type

如果要检查 JavaScript 中的相等性,有两个比较运算符:双等号运算符(==)和三等号运算符(===)。

简而言之,双等号运算符(==)仅仅比较值,而三等号运算符(===)可以比较值和类型。但是还有第三个选项 Object.is(),除了 NaN+0-0 之外,其行为与三等号于运算符相同。

以下是一些例子,可进一步明确说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{} === {}; // false
Object.is({}, {}); // false

1 === 1; // false
Object.is(1, 1); // false

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

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

以下代码是在 ES5 中模拟实现的Object.is

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Object.defineProperty(Object, 'is', {
  value: function(x, y) {
    if (x === y) {
      // 针对+0 不等于 -0的情况
      return x !== 0 || 1 / x === 1 / y;
    }
    // 针对NaN的情况
    return x !== x && y !== y;
  },
  configurable: true,
  enumerable: false,
  writable: true
});
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端先锋 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【ES6基础】Object的新方法
Object对象可谓是JS的重要核心内容,在你使用JS的过程中,你会发现自己的工作大部分都是在操作对象,ES6、ES7、ES8引入了不少新的方法,本篇文章笔者将带着大家一起熟悉下重点的新方法。
前端达人
2019/05/27
7060
【ES6基础】Object的新方法
【ES6基础】Object的新方法
Object对象可谓是JS的重要核心内容,在你使用JS的过程中,你会发现自己的工作大部分都是在操作对象,ES6、ES7、ES8引入了不少新的方法,本篇文章笔者将带着大家一起熟悉下重点的新方法。
前端达人
2019/06/04
5280
【ES6基础】Object的新方法
学习VUE总得知道Object.defineProxy怎么使用吧
工作归工作,不要觉得会用就完事了,很多时候得多看看基础。今天就专门讲一下Object.defineProxy是如何使用的,这样在以后讲到Vue2.X的源码时,就更容易理解了。
伯约同学
2022/02/14
2850
JavaScript的各种等号`==` `===`最全详解
通常使用双等号或三等号将NaN与NaN进行比较,结果为false,因为IEEE 754如是说
JavaEdge
2020/05/26
8210
双向数据绑定中重要属性-Object.defineProperty()详解
给这个对象添加一个fullName属性,fullName的值为obj.firstName-obj.lastName
用户10106350
2022/10/28
7850
双向数据绑定中重要属性-Object.defineProperty()详解
Object.defineProperty
要记住Object.defineProperty可不只有get和set两个属性哦~
yuezhongbao
2020/05/11
4510
ES6--对象的扩展
属性和方法的简写一般作为函数函数的返回值, 对象属性的赋值器和构造器, 以及CommonJS 模块输出一组变量,就非常合适使用简洁写法。
Clearlove
2019/08/29
6360
Object.defineProperty方法详解
Object.defineProperty() 方法在 JavaScript 中被用来直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。这个方法允许你精确地控制属性在对象上的行为,包括属性的值、可写性、可枚举性和可配置性。
jack.yang
2025/04/05
1060
详解JavaScript之神奇的Object.defineProperty
摘要: JavaScript有个很神奇的Object.defineProperty(),了解一下?
Fundebug
2018/07/05
6030
ES6之对象的扩展
对象有一个描述对象,通过Object.getOwnPropertyDescriptor方法可以获取:
wade
2020/04/24
3610
javascript 中Object一些操作方法
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
chuchur
2022/10/25
6920
初学者也能看懂的 Vue3 源码中那些实用的基础工具函数
我们也可以通过ts文件,查看使用函数的位置。同时在VSCode运行调试JS代码,我们比较推荐韩老师写的code runner插件。
用户7108768
2021/09/19
4370
深入浅出Object.defineProperty()
本文部分参考了书籍《你不知道的javascript》上卷 对象的定义与赋值 经常使用的定义与赋值方法obj.prop =value或者obj['prop']=value Object.defineP
IT架构圈
2018/06/01
7113
Object.definePropety
Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象,也就是说,该方法允许精确地添加或修改对象的属性。
WindRunnerMax
2020/08/27
5320
ES6 学习笔记之对象的拓展
ES6 简洁方法后与一些面向对象的高级语言(如C++)差不多,函数名+参数+花括号。另外注意简洁写法的属性名是按字符串解析的。方法的属性名可以是一些关键字,由于是按字符串来解析的,所以不会产生歧义。
我与梦想有个约会
2020/01/05
2890
彻底搞懂Object.defineProperty
早在大半年前,掘金某位用户分享的面试题整理中有一题,简述let与const区别,你能自己模拟实现它们吗?,题目意思大概如此,时间久远我也很难找到那篇文章,当时看到此题对于const实现我的想法就是有个writable属性可以定义值是否可以修改,不过也只是脑中一闪,并未细究。
zz_jesse
2021/01/06
1.7K0
彻底搞懂Object.defineProperty
ES6-标准入门·语法的扩展
ES6 对语法进行了大量扩展,包括且不限于字符串、正则、数值、函数、数组、对象的扩展等,此篇总结 ES6 新增的一些常用的新语法,一起来学习新姿势。
数媒派
2022/12/01
1.1K0
JavaScript 中的相等性判断
简而言之,在比较两件事情时,双等号将执行类型转换; 三等号将进行相同的比较,而不进行类型转换 (如果类型不同, 只是总会返回 false ); 而Object.is的行为方式与三等号相同,但是对于NaN和-0和+0进行特殊处理,所以最后两个不相同,而Object.is(NaN,NaN)将为 true。(通常使用双等号或三等号将NaN与NaN进行比较,结果为false,因为IEEE 754如是说.) 请注意,所有这些之间的区别都与其处理原语有关; 这三个运算符的原语中,没有一个会比较两个变量是否结构上概念类似。对于任意两个不同的非原始对象,即便他们有相同的结构, 以上三个运算符都会计算得到 false 。
用户7293182
2022/01/17
1K0
JavaScript 中的相等性判断
JavaScript String、Array、Object、Date 常用方法小结
  反正闲着也是闲着,稍微整理总结了一下 JavaScript 字符串、数组、对象、时间的常用方法,阿彪出品,必属精品/滑稽。
老猫-Leo
2023/12/11
2610
JavaScript 中的4种相等算法
👆点击“博文视点Broadview”,获取更多书讯 在 JavaScript 中如何判断两个值相等,这个问题看起来非常简单,但并非如此,在 JavaScript 中存在 4 种不同的相等逻辑,如果你不知道他们的区别,或者认为判断相等非常简单,那么本文非常适合你阅读。 ECMAScript 是 JavaScript 的语言规范,在ECMAScript 规范[1]中存在四种相等算法,如下图所示: 上图中四种算法对应的中文名字如下,大部分前端应该熟悉严格相等和非严格相等,但对于同值零和同值却不熟悉,下面我
博文视点Broadview
2023/02/23
4840
JavaScript 中的4种相等算法
相关推荐
【ES6基础】Object的新方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验