util.isDeepStrictEqual(val1, val2[, options])


  • val1 <any>
  • val2 <any>
  • skipPrototype <boolean> 如果为 true,在深度严格相等检查中将跳过原型和构造函数的比较。默认值: false
  • 返回:<boolean>

如果 val1val2 之间存在深度严格相等,则返回 true。否则,返回 false

【Returns true if there is deep strict equality between val1 and val2. Otherwise, returns false.】

默认情况下,深度严格相等包括对对象原型和构造函数的比较。当 skipPrototypetrue 时,即使对象的原型或构造函数不同,只要它们的可枚举属性深度严格相等,也可以被认为是相等的。

【By default, deep strict equality includes comparison of object prototypes and constructors. When skipPrototype is true, objects with different prototypes or constructors can still be considered equal if their enumerable properties are deeply strictly equal.】

const util = require('node:util');

class Foo {
  constructor(a) {
    this.a = a;
  }
}

class Bar {
  constructor(a) {
    this.a = a;
  }
}

const foo = new Foo(1);
const bar = new Bar(1);

// Different constructors, same properties
console.log(util.isDeepStrictEqual(foo, bar));
// false

console.log(util.isDeepStrictEqual(foo, bar, true));
// true 

有关严格深度相等的更多信息,请参见 assert.deepStrictEqual()

【See assert.deepStrictEqual() for more information about deep strict equality.】