Node.js - assert() 函数



Node.js assert() 函数用于验证给定值是否真实。

其中 truthy 值是布尔值或非布尔值,在与比较运算符一起使用时被视为“true”。除以下值外,所有值都被视为 true 值:false、0 、 -0 、 0n 、 “” 、 null 、 undefined 和 NaN。

当我们作为参数传递的值不是 false 时,此函数会抛出 AssertionError。如果该值为 true,则不会引发任何错误。此函数的工作原理类似于 assert.ok() 函数。

这是 assert 模块的一个内置函数,它提供了一组用于验证不变量的 assert 函数。

语法

以下是 Node.js assert() 函数的语法 -


 assert(value[, message]);

参数

此函数接受两个参数。下面将对此进行描述。

  • value − (必填) 将评估此参数中传递的值是否真实。该值可以是任何类型。
  • message − (可选)字符串或错误类型可以作为值传递给此参数。

返回值

如果值不为 true,则此函数将在终端上返回 AssertionError。

在下面的示例中,我们通过将布尔值“false”作为参数传递来调用 Node.js assert() 函数。

const assert = require('assert');
assert(false);

输出

由于给定的值是 false,因此当我们编译并运行代码时,它将抛出 AssertionError。


node main.js
assert.js:269
	 	throw err;
	 	^
	 	
AssertionError [ERR_ASSERTION]: This is a falsy value
	 	at Object.<anonymous> (/home/cg/root/639c16a06de3d/main.js:3:1)
	 	at Module._compile (internal/modules/cjs/loader.js:702:30)
	 	at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
	 	at Module.load (internal/modules/cjs/loader.js:612:32)
	 	at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
	 	at Function.Module._load (internal/modules/cjs/loader.js:543:3)
	 	at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
	 	at startup (internal/bootstrap/node.js:238:19)
	 	at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

在以下示例中,我们将一个字符串作为可选参数 (message) 传递。以及 false 值。使用此值,我们可以自定义ERR_ASSERTION语句。


const assert = require('assert');
assert(NaN, "The Given value is not a number ");

输出

assert.js:269
throw err;
^

AssertionError [ERR_ASSERTION]: The Given value is not a number
at Object.<anonymous> (/home/cg/root/63b28b24b5cef/main.js:2:1)
at Module._compile (internal/modules/cjs/loader.js:702:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:238:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

在下面的示例中,我们正在创建一个函数并执行两个数字的减法。然后我们将函数的返回值与 Node.js assert() 函数的 value 参数中的某个数字进行比较。


const assert = require('assert');
function subtraction(a,b){
	 	return a - b;
};
var output = subtraction(10 - 7);
assert(output === 4, 'Ten minus seven is four');

输出

当我们编译并运行代码时,它将向输出抛出一个 AssertionError。因此,结果是错误的。

assert.js:269
throw err;
^

AssertionError [ERR_ASSERTION]: Ten minus seven is four
at Object.<anonymous> (/home/cg/root/639c16a06de3d/main.js:7:1)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:238:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

在下面的示例中,我们通过将一个真实值传递给函数的 value 参数并将一个文本传递给函数的消息参数来调用 Node.js assert() 函数。


const assert = require('assert');
assert(true, 'This is a truthy value');

输出

因此,当我们编译并运行代码时,它不会向输出抛出 AssertionError。因此,结果是正确的。

// Returns nothing

在下面的示例中,我们正在创建一个函数并执行了两个数字的相加。然后我们将函数的返回值与 assert() 函数的 value 参数中的某个数字进行比较。


const assert = require('assert');
function add(a,b){
	 	return a + b;
};
var output = add(5 + 5);
assert(output === 10, 'five plus five is ten');

输出

当我们编译并运行代码时,该函数不会在输出上返回任何内容。