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

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

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

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

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

  1. {} === {}; // false 
  2. Object.is({}, {}); // false 
  3.  
  4. 1 === 1; // false 
  5. Object.is(1, 1); // false 
  6.  
  7. +0 === -0; // true 
  8. Object.is(+0, -0); // false 
  9.  
  10. NaN === NaN; // false 
  11. Object.is(NaN, NaN); // true 

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

  1. Object.defineProperty(Object, 'is', { 
  2.   value: function(x, y) { 
  3.     if (x === y) { 
  4.       // 针对+0 不等于 -0的情况 
  5.       return x !== 0 || 1 / x === 1 / y; 
  6.     } 
  7.     // 针对NaN的情况 
  8.     return x !== x && y !== y; 
  9.   }, 
  10.   configurable: true, 
  11.   enumerable: false, 
  12.   writable: true 
  13. }); 

 

责任编辑:赵宁宁 来源: 前端先锋
相关推荐

2020-06-04 08:13:36

JavaScriptObject.is()运算符

2023-11-01 08:08:47

PythonIS运算符

2024-01-31 08:12:42

编程C++运算符

2021-05-07 06:27:29

JavaScript运算符开发

2020-08-02 23:20:36

JavaScriptmap()forEach()

2022-09-07 00:04:37

JavaScript运算符技巧

2020-03-23 11:28:56

PythonJavaScript技术

2023-12-25 15:40:55

React开发

2023-04-10 08:58:13

C#关系运算符

2021-02-20 23:34:22

JavaScript运算符开发

2017-05-11 16:38:07

javascript逻辑运算符

2020-03-27 22:33:30

JavaScript运算符逗号

2023-09-07 23:30:47

运算符C++

2022-05-18 14:18:56

区块链加密技术数据

2018-07-13 17:05:22

SQLMySQL数据库

2023-10-13 15:48:17

OT系统

2020-12-22 13:46:48

APISKD

2011-08-08 14:09:55

dhcpbootp

2022-08-31 08:33:54

Bash操作系统Linux

2021-07-12 15:35:56

JavaScript代码运算符
点赞
收藏

51CTO技术栈公众号