Node.js util.isDeepStrictEqual() 方法

2025年2月21日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 中的 util.isDeepStrictEqual() 方法及其主要特性、语法、参数和示例。

Node.js 中的 util.isDeepStrictEqual() 方法是什么?

util.isDeepStrictEqual() 方法的作用正如其名称所暗示的:它确定两个值是否深度严格相等。如果两个值都不是深度严格相等,则返回 false,否则返回 true。util.isDeepStrictEqual() 函数是 Node.js 中 util 模块提供的实用函数之一。它对两个值进行彻底的比较,以确定它们是否严格相等。与浅层或宽松的相等检查 (==) 不同,此方法检查深度结构和值相等性,同时考虑嵌套对象和数组的类型和值。

util.isDeepStrictEqual() 函数的主要特性

  • 深度比较: 递归比较用于对象和数组的所有方面。它涵盖对象层次结构中的所有属性。
  • 完全等价: 对于原始值 (===),存在严格的相等性。
  • 因此,1 和 1n(数字和 BigInt)被认为是不同的,true 和 1 也是如此。
  • 处理特殊情况: 它正确处理各种比较类型,包括日期、RegExp、集合、映射等。它正确区分不同类型的特殊对象和值。

语法

它具有以下语法:

参数

输入参数 val1 和 val2 可以接受来自类、函数或对象的原始 JavaScript 值。前面提到的函数确定这两个值是否相等。

示例代码

让我们举一个例子来说明 Node.js util.isDeepStrictEqual() 函数。

输出

 
true
false
true
false
true
false
true
false
true
false
true
false
false
true
true   

说明

  • 对象: 当两个对象具有相同的值和结构时,该方法会正确识别。
  • 数组: 它逐个组件检查嵌套数组。
  • 日期: 具有相同时间值的两个日期被认为是相等的。
  • 集合: 等价性适用于包含相同元素的集合。
  • 映射: 具有相同键值对的映射被认为是相等的。
  • 不同类型: 具有相同数值的两种不同类型是数字和 BigInt。
  • Null 和 Undefined: 该方法区分这两个参数。

示例

让我们再举一个例子来说明 Node.js util.isDeepStrictEqual() 函数。

输出

 
A. Are person1 and person2 the same object?: false
B. Are person1 and person2 deeply equal?: true
C. Is emptyObject deeply equal to Array.prototype?: false
D. Is currentDate deeply equal to Date.prototype?: false
E. Are array1 and array2 deeply equal?: true
F. Are set1 and set2 deeply equal?: true   

结论

总之,util.isDeepStrictEqual() 函数是一个强大的 Node.js 工具,用于对深度嵌套的对象和数组进行详尽的相等性检查。由于其严格的比较语义,确保了准确可靠的结果,因此在需要精确彻底的相等性检查的场景中非常有用。