📜  Node.js util.isDeepStrictEqual() 方法

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

Node.js util.isDeepStrictEqual() 方法

“util”模块提供了用于调试目的的“utility”函数。为了访问这些函数,我们需要调用它们(通过' require('util') ')。

util.isDeepStrictEqual() (在 v9.0.0 中添加)方法是 util 模块的内置应用程序编程接口,它是一个导出类型函数,用于测试两个值的深度相等性,即实际 ( value1 ) 和预期 ( value2 ) 参数。深度相等是一种有助于通过一些规则递归地评估子对象的可枚举“自己”属性的方法。

句法:

const util = require('util');
util.isDeepStrictEqual(val1, val2);

参数:该函数接受上面提到的两个参数,如下所述:

  • val1 任何变量、类、函数、对象或 JavaScript 原语。

  • val2 任何变量、类、函数、对象或 JavaScript 原语。

返回值 如果 value1 和 value2 被认为相等则返回true ,否则返回false

示例 1:文件名:index.js

// Node.js syntax to demonstrate the 
// util.isDeepStrictEqual() method
  
// Importing util library
const util = require('util');
  
// Creating object1
const object1 = {
    alfa: "beta",
    romeo: [10, 20]
};
  
// Creating object2
const object2 = {
    alfa: "beta",
    romeo: [10, 20]
};
  
// Returns false
console.log("1.>", object1 == object2)
  
// Returns true
console.log("2.>", util
    .isDeepStrictEqual(object1, object2))
  
// Creating a fake date
const wrongDateType = {};
  
// Comparing wrongDateType with correct date
console.log("3.>", util.isDeepStrictEqual(
            wrongDateType, Date.prototype));
  
const anObject = {};
  
// Prototype is not same
console.log("4.>", util.isDeepStrictEqual(
            anObject, wrongDateType));
// Returns false
  
// Creating new date
const newDate = new Date();
  
// Comparing Date formats
console.log("5.>", util.isDeepStrictEqual(
            newDate, wrongDateType));
// Returns false
  
const weakMapOne = new WeakMap();
const weakMapTwo = new WeakMap([[{}, {}]]);
  
// Comparing two weakMaps  
console.log("6.>", util.isDeepStrictEqual(
            weakMapOne, weakMapTwo));
// Returns true

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

node index.js

输出:

1.> false
2.> true
3.> true
4.> true
5.> false
6.> true

示例 2:文件名:index.js

// Node.js syntax to demonstrate the
// util.isDeepStrictEqual() method
  
// Importing util library
const util = require('util');
  
// String and integer are compared
// wrong 1 !== '1'.
console.log("1.>", util
    .isDeepStrictEqual({ a: 1 }, { a: '1' }));
// Returns false 
  
// Comparing Not a Number with Not a Number
console.log("2.>", util.isDeepStrictEqual(NaN, NaN));
// Returns true
  
// Unwrapped numbers are different
console.log("3.>", util
    .isDeepStrictEqual(Object(1), Object(2)));
// Returns false
  
// Directly importing isDeepStrictEqual method
const { isDeepStrictEqual } = require('util');
  
// Unwrapped strings are same
console.log("4.>", isDeepStrictEqual(
        Object('alfa'), Object('alfa')));
// Returns true
  
// Comparing both negative values  
console.log("5.>", isDeepStrictEqual(-0, -0));
// Returns true
  
// Same Value Comparison with different sign
console.log("6.>", isDeepStrictEqual(0, -0));
// Returns false

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

node index.js

输出:

1.> false
2.> true
3.> false
4.> true
5.> true
6.> false

参考: https://nodejs.org/api/util.html#util_util_isdeepstrictequal_val1_val2