📌  相关文章
📜  如何检查提供的值是否属于 JavaScript 中的指定类型?

📅  最后修改于: 2022-05-13 01:56:28.642000             🧑  作者: Mango

如何检查提供的值是否属于 JavaScript 中的指定类型?

以下方法介绍了如何检查提供的值是否属于 JavaScript 中的指定类型。

方法: ECMAScript 2015 (俗称ES6 )中引入的Object.is() JavaScript 方法判断两个值是否相同。

Object.is()判断两个值是否相同。如果两个值都未定义,则两个值相同,均为 null,均为 true 或均为 false,长度相同且字符顺序相同的两个字符串,均为同一对象(意味着两个值都引用内存中的同一对象),两个数字和 +0、两个 -0、两个 NaN 或两个非零且都不是 NaN 并且都具有相同的值

句法 :

Object.is(value1, value2);

参数:该方法接受以下两个参数:

  • value1:它是第一个要比较的值。
  • value2:第二个要比较的值。

返回值:此函数返回布尔值。

示例 1:

index.js
// Evaluation result is the same as using ===
console.log(Object.is(25, 25));                // true
console.log(Object.is('foo', 'foo'));          // true
console.log(Object.is('foo', 'bar'));          // false
console.log(Object.is(null, null));            // true
console.log(Object.is(undefined, undefined));  // true
console.log(Object.is([], []));                // false
  
var foo = { a: 1 };
var bar = { a: 1 };
  
console.log(Object.is(foo, foo));              // true
console.log(Object.is(foo, bar));              // false


index.js
// Signed Zero
console.log(Object.is(0, -0));                 // false
console.log(Object.is(+0, -0));                // false
console.log(Object.is(-0, -0));                // true
console.log(Object.is(0n, -0n));               // true
  
// NAN case
console.log(Object.is(NaN, 0/0));              // true
console.log(Object.is(NaN, Number.NaN))        // true


使用以下命令运行index.js文件:

node index.js

输出:

true
true
false
true
true
false
true
false

示例 2:

index.js

// Signed Zero
console.log(Object.is(0, -0));                 // false
console.log(Object.is(+0, -0));                // false
console.log(Object.is(-0, -0));                // true
console.log(Object.is(0n, -0n));               // true
  
// NAN case
console.log(Object.is(NaN, 0/0));              // true
console.log(Object.is(NaN, Number.NaN))        // true

使用以下命令运行index.js文件:

node index.js

输出:

false
false
true
true
true
true

Object.is() 和 === (严格等式)之间的主要区别

  • Object.is(+0,0) 为假,Object.is(NaN,NaN) 为真。
  • 所以 Object.is() 只是 === 对于负零 -0 和 NaN 具有不同的行为。

注意:作为 ES6 特性,它可能不被旧浏览器支持,但可以使用 Babel 实现兼容性。