断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
当前回答
Node.js有一个assert函数,你可以导入:
Const assert = require('assert')
正如人们所期望的那样,assert(false)抛出一个错误,assert(false, message)抛出一个带有消息的错误。
其他答案已经指出JS本身没有本机断言函数,在撰写本文(2021年4月)时仍然如此。
其他回答
单词或函数“assert”主要用于应用程序的测试部分。
断言函数是指示程序检查条件(也称为“断言”)的一种简短方式,如果条件不为True,它将抛出错误。
让我们看看它在"普通代码"中是怎样的
If (typeof "string" === "array") { 抛出错误('错误:"string" !== "array"'); }
使用assert你可以简单地写:
Assert (typeof "string" === "array")
在Javascript中,没有本地断言函数,所以你必须使用某个库中的断言函数。
简单介绍,可以查看这篇文章:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
我希望这能有所帮助。
以前的答案可以在性能和兼容性方面得到改进。
检查一次Error对象是否存在,如果没有声明它:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
然后,每个断言将检查条件,并始终抛出一个Error对象
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
请记住,控制台不会显示真正的错误行号,而是assert函数的行号,这对调试没有用处。
其他答案很好:ECMAScript5中没有内置断言函数(例如,JavaScript基本上在任何地方都可以工作),但一些浏览器提供了断言函数或提供了提供该功能的附加组件。虽然最好使用一个完善的/流行的/维护的库,但出于学术目的,“穷人的断言”函数可能是这样的:
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console
Node.js有一个assert函数,你可以导入:
Const assert = require('assert')
正如人们所期望的那样,assert(false)抛出一个错误,assert(false, message)抛出一个带有消息的错误。
其他答案已经指出JS本身没有本机断言函数,在撰写本文(2021年4月)时仍然如此。
如果使用现代浏览器或nodejs,则可以使用console。断言(表情,对象)。
欲了解更多信息:
Chrome API参考 Firefox Web控制台 Firebug控制台API IE控制台API 歌剧蜻蜓 Nodejs控制台API