断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
当前回答
它可能与您的某些代码正在使用的测试库一起提供。这里有一个例子(它可能与你的代码使用的库不同,但它显示了一般的思想):
http://chaijs.com/guide/styles/#assert
其他回答
Java有一个断言语句,JVM默认禁用断言验证。它们必须使用命令行参数-enableassertions(或其简写-ea)显式启用,
虽然JavaScript支持console.assert(),但它只是一个日志方法,如果断言失败也不会中断当前过程。
为了把东西放在一起并满足各种需求,这里有一个小的js断言库。
globalThis.assert = (()=> { class AssertionError extends Error { constructor(message) { super(message); this.name = 'AssertionError'; } } let config = { async: true, silent: false }; function assert(condition, message = undefined) { if (!condition) { if (config.silent) { //NOOP } else if (config.async) { console.assert(condition, message || 'assert'); } else { throw new AssertionError(message || 'assertion failed'); } } } assert.config = config; return assert; })(); /* global assert */ Object.assign(assert.config, { // silent: true, // to disable assertion validation async: false, // to validate assertion synchronously (will interrupt if assertion failed, like Java's) }); let items = [ {id: 1}, {id: 2}, {id: 3} ]; function deleteItem(item) { let index = items.findIndex((e)=> e.id === item.id); assert(index > -1, `index should be >=0, the item(id=${item.id}) to be deleted doesn't exist, or was already deleted`); items.splice(index, 1); } console.log('begin'); deleteItem({id: 1}); deleteItem({id: 1}); console.log('end');
正如t.j.所提到的,JavaScript中没有断言。 但是,有一个名为assert的节点模块,主要用于测试。所以,你可能会看到这样的代码:
const assert = require('assert');
assert(5 > 7);
assert()是JavaScript中的assert函数。断言的主要思想是找出错误发生的原因/位置。
Assert()不是原生javascript函数。这是一个自定义函数。你必须在你的页面或文件中寻找它,并将其发布给任何人,以帮助确定它在做什么。
单词或函数“assert”主要用于应用程序的测试部分。
断言函数是指示程序检查条件(也称为“断言”)的一种简短方式,如果条件不为True,它将抛出错误。
让我们看看它在"普通代码"中是怎样的
If (typeof "string" === "array") { 抛出错误('错误:"string" !== "array"'); }
使用assert你可以简单地写:
Assert (typeof "string" === "array")
在Javascript中,没有本地断言函数,所以你必须使用某个库中的断言函数。
简单介绍,可以查看这篇文章:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
我希望这能有所帮助。