nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较

针对这个问题,我分几个部分来详细介绍一下。

简介

Assert 是 Node.js 中内置的一个断言库,用于测试和检查代码中的条件是否为真。它提供了 equal(), strictEqual(), deepEqual(), strictDeepEqual() 四种方法,这四种方法都被用于测试相等性。这四种方法之间的主要区别在于它们用于检查相等性的方式不同。

  • equal(a, b):断言 a == b,即两个值是否相等(其中 == 不会进行严格的类型检查)。
  • strictEqual(a, b):断言 a === b,即两个值是否全等(其中 === 会进行严格的类型检查)。
  • deepEqual(a, b):断言 a 和 b 的属性和属性值是否完全相等。
  • strictDeepEqual(a, b):断言 a 和 b 的属性、属性值及类型是否完全相等。

equal() 方法

equal(a, b) 方法比较的是两个值是否相等,但是不会进行类型检查。如果两个值相等,则断言通过,否则将抛出错误。

const assert = require('assert');

assert.equal(2, '2'); // 不会抛出错误,因为 '2' 会被隐式转换为数字 2

assert.equal(2, '3'); // 抛出 AssertionError: 2 == 3

在第一个示例中,'2' 会被隐式转换为数字 2,所以这个断言是通过的。但是在第二个示例中,2'3' 不相等,所以这个断言会抛出错误。

strictEqual() 方法

strictEqual(a, b) 方法比较的是两个值是否全等,不仅要比较两个值是否相等,还要比较两个值的类型。如果两个值全等,则断言通过,否则将抛出错误。

const assert = require('assert');

assert.strictEqual(2, 2); // 不会抛出错误

assert.strictEqual(2, '2'); // 抛出 AssertionError: 2 === '2'

在第一个示例中,22 是全等的,所以这个断言是通过的。但是在第二个示例中,2'2' 的类型不同,所以这个断言会抛出错误。

deepEqual() 方法

deepEqual(a, b) 方法比较的是两个对象的属性和属性值是否相等,它会一直递归比较对象的属性直到找到原始类型的值为止。

const assert = require('assert');

const obj1 = {
  a: 1,
  b: {
    c: 'hello'
  }
};

const obj2 = {
  a: 1,
  b: {
    c: 'hello'
  }
};

const obj3 = {
  a: 1,
  b: {
    c: 'world'
  }
};

assert.deepEqual(obj1, obj2); // 不会抛出错误

assert.deepEqual(obj1, obj3); // 抛出 AssertionError: { a: 1, b: { c: 'hello' } } deepEqual { a: 1, b: { c: 'world' } }

在第一个示例中,obj1obj2 的属性和属性值完全相同,所以这个断言是通过的。但是在第二个示例中,obj1obj3b.c 不相等,所以这个断言会抛出错误。

strictDeepEqual() 方法

strictDeepEqual(a, b) 方法比较的是两个对象的属性、属性值以及类型是否完全相等,它会一直递归比较对象的属性直到找到原始类型的值为止。

const assert = require('assert');

const obj1 = {
  a: 1,
  b: {
    c: 'hello'
  }
};

const obj2 = {
  a: 1,
  b: {
    c: 'hello'
  }
};

const obj3 = {
  a: 1,
  b: {
    c: 'world'
  }
};

assert.deepStrictEqual(obj1, obj2); // 不会抛出错误

assert.deepStrictEqual(obj1, obj3); // 抛出 AssertionError: { a: 1, b: { c: 'hello' } } deepStrictEqual { a: 1, b: { c: 'world' } }

在第一个示例中,obj1obj2 的属性和属性值以及类型完全相同,所以这个断言是通过的。但是在第二个示例中,obj1obj3b.c 不相等,所以这个断言会抛出错误。

这就是 equal(), strictEqual(), deepEqual(), strictDeepEqual() 的详细攻略,你可以结合示例进行理解和使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Node.js中如何合并两个复杂对象详解

    合并两个复杂对象在Node.js中是一种常见需求。下面是合并两个复杂对象的完整攻略: 步骤一:安装lodash模块 在Node.js中,可以使用lodash模块来合并两个复杂对象。因此,在进行对象合并之前,需要保证该模块已安装。 npm install –save lodash 步骤二:导入lodash模块 在对象合并之前,需要将lodash模块导入到No…

    node js 2023年6月8日
    00
  • Sublime Text3 配置 NodeJs 环境的方法

    下面我来为你详细讲解“Sublime Text3 配置 NodeJs 环境的方法”的完整攻略。具体过程如下: 1. 安装 NodeJs 首先,我们需要安装 NodeJs,NodeJs 的安装比较简单,前往官网下载对应版本的 NodeJs 安装包,安装即可。 2. 安装 Package Control 插件 Sublime Text3 的 Package Co…

    node js 2023年6月8日
    00
  • 浅谈node使用jwt生成的token应该存在哪里

    当使用 Node.js 程序生成 JSON Web Token (JWT) 时,您需要决定如何存储生成的 token。根据您的具体情况和需求,您可以将 jwt 存储在 cookies、localStorage 中,或者作为 Authorization 头在 HTTP 请求中发送。 以下是三种存储 jwt 的方式: 存储在Cookie中 当您将 Token 存…

    node js 2023年6月8日
    00
  • 一文详解GoJs中go.Panel的itemArray属性

    当我们在使用GoJS的时候,很多时候我们都需要使用Panel这个类来进行布局,而Panel类中一个非常重要的属性是itemArray。本文将详细说明itemArray的作用与用法。 什么是itemArray 在Panel中可以添加的子控件称为item。Panel的item数组属性就是指定了所有添加到该Panel中的子控件,也就是item的数组。itemArr…

    node js 2023年6月8日
    00
  • nodejs基于express实现文件上传的方法

    当我们需要在Node.js中实现文件上传功能的时候,通常使用Express.js框架来实现是一种非常方便可行的方法。本攻略将详细讲解如何使用Express.js框架来实现文件上传。 安装依赖 首先需要安装必要的依赖包,您需要在命令行中运行以下命令: npm install express multer –save 其中,multer是一个处理文件上传的 N…

    node js 2023年6月8日
    00
  • nodejs二进制与Buffer的介绍与使用

    Node.js二进制与Buffer的介绍与使用 什么是二进制 计算机中的数字,都是以二进制的方式来存储和处理的。二进制是由“0”和“1”两个数字组成,其中每一位代表2的不同次方。例如,一个8位二进制数“10101010”所代表的十进制数就是:(1×2^7) + (0x2^6) + (1×2^5) + (0x2^4) + (1×2^3) + (0x2^2) +…

    node js 2023年6月8日
    00
  • 宝塔部署nodejs项目的实战步骤

    下面是宝塔部署Node.js项目的实战步骤: 1. 在宝塔面板上安装Node.js环境 打开宝塔面板,找到“软件商店”,搜索“Node.js”。 在搜索结果中点击“安装”按钮进行安装。 2. 上传Node.js项目到宝塔网站目录 在宝塔面板中找到需要部署的网站,点击进入。 找到网站目录所在位置,在目录下新建一个文件夹,命名为“node”。 将本地Node.j…

    node js 2023年6月8日
    00
  • Node.JS获取GET,POST数据之queryString模块使用方法详解

    下面是详细讲解“Node.JS获取GET,POST数据之queryString模块使用方法详解”的完整攻略。 什么是queryString模块? Node.js中的queryString模块可以用于解析和格式化URL查询字符串(query string)。它是一个内置模块,因此无需单独安装。queryString模块主要包含两个方法: queryString…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部