什么是“;断言”;用JavaScript?
在JavaScript中,什么是“;断言”;用JavaScript?,javascript,assert,Javascript,Assert,在JavaScript中,assert是什么意思 我见过这样的情况: assert(function1() && function2() && function3(), "some text"); 并且想知道方法assert()的作用。JavaScript本身没有标准assert。也许你正在使用某个提供一个的库;例如,如果您使用的是Node.js,那么您可能正在使用。(浏览器和其他环境提供了一个控制台来实现该功能。) assert函数的通常含义是,如果传入函数的
assert
是什么意思
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道方法
assert()
的作用。JavaScript本身没有标准assert
。也许你正在使用某个提供一个的库;例如,如果您使用的是Node.js,那么您可能正在使用。(浏览器和其他环境提供了一个控制台来实现该功能。)
assert
函数的通常含义是,如果传入函数的表达式为false,则抛出错误;这是一般概念的一部分。通常断言(正如它们被称为)只在“测试”或“调试”构建中使用,并从生产代码中剥离出来
假设您有一个函数,该函数应该总是接受字符串。您可能想知道是否有人使用非字符串的东西调用了该函数(没有像TypeScript或Flow这样的类型检查层)。所以你可以这样做:
assert(typeof argumentName === "string");
…其中,assert
将在条件为false时引发错误
非常简单的版本如下所示:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
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
更好的方法是使用Error
对象,该对象具有收集堆栈跟踪等优点:
function assert(condition, message) {
if (!condition) {
throw new Error(message || "Assertion failed");
}
}
assert()
不是本机javascript函数。这是一个自定义函数。你必须在你的页面或文件中查找它,并将其发布给任何人,以帮助确定它在做什么 它可能附带了一些代码正在使用的测试库。下面是一个示例(很可能它与您的代码使用的库不同,但它显示了总体思路):
检查以下内容:
它用于测试JavaScript。令人惊讶的是,这段代码只有五到六行,在测试时,它提供了强大的能力和对代码的控制
assert函数接受两个参数:
结果:一个布尔值,它引用测试是通过还是失败
描述:测试的简短描述
然后,assert函数简单地创建一个列表项,根据测试返回的是true还是false,应用一个“pass”或“fail”类,然后将描述附加到列表项。最后,该编码块被添加到页面中。它非常简单,但工作非常完美。如果使用现代浏览器或nodejs,您可以使用
控制台。断言(表达式、对象)
有关更多信息:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
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
以前的答案可以在性能和兼容性方面进行改进
检查一次如果错误
对象存在,如果不声明它:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
然后,每个断言都将检查条件,并且总是抛出一个错误对象
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
请记住,控制台不会显示真正的错误行号,而是显示assert
函数的行,这对调试没有帮助。这里是assert函数的一个非常简单的实现。它需要一个值和对测试内容的描述
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
如果该值的计算结果为true,则该值将通过
assert (1===1, 'testing if 1=1');
如果返回false,则失败
assert (1===2, 'testing if 1=1');
如果断言为false,则显示消息。具体来说,如果第一个参数为false,则第二个参数(字符串消息)将记录在开发人员工具控制台中。如果第一个参数为真,基本上什么也不会发生。一个简单的例子——我正在使用谷歌开发者工具:
var isTrue = true;
var isFalse = false;
console.assert(isTrue, 'Equals true so will NOT log to the console.');
console.assert(isFalse, 'Equals false so WILL log to the console.');
如果你使用webpack,你可以直接使用。尽管他们声称它“不打算成为一个通用断言库”,但对于即席断言来说,它似乎更合适,而且在节点空间中似乎没有竞争对手(Chai是为单元测试而设计的)
您需要使用webpack或browserify才能使用此功能,因此显然,只有在工作流中已经存在这些功能时,此功能才有用。除了其他选项,如或,您可以使用。它有两个独特的功能:
- 它支持格式化错误消息(使用
%s
说明符)
- 在生产环境中(由Node.js或Webpack环境确定),错误消息是可选的,允许(稍微)更小的.js
单词或函数“assert”主要用于测试应用程序的各个部分
断言函数是指示程序检查条件(也称为“断言”)的一种简短方法,如果条件不正确,它将抛出错误
让我们看看它在“普通代码”中的样子
if(字符串的类型=“数组”){
抛出错误('Error:'string'!=='array');
}
使用assert
可以简单地编写:
assert(类型为“字符串”=“数组”)
在Javascript中,没有本机的assert
函数,因此必须使用某个库中的函数
对于简单的介绍,您可以查看本文:
我希望它能有所帮助。正如T.J.提到的,JavaScript中没有assert
。
但是,有一个名为的节点模块,它是。因此,您可能会看到如下代码:
const assert = require('assert');
assert(5 > 7);
如果第一个属性为false,断言将抛出错误消息,而第二个属性是要抛出的消息
console.assert(condition,message);
有很多评论说断言在JavaScript中不存在,但console.assert()是JavaScript中的assert函数
断言的思想是找出bug发生的原因/位置
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");