断言在JavaScript中是什么意思?

我见过这样的情况:

assert(function1() && function2() && function3(), "some text");

并且想知道assert()方法做什么。


当前回答

单词或函数“assert”主要用于应用程序的测试部分。

断言函数是指示程序检查条件(也称为“断言”)的一种简短方式,如果条件不为True,它将抛出错误。

让我们看看它在"普通代码"中是怎样的

If (typeof "string" === "array") { 抛出错误('错误:"string" !== "array"'); }

使用assert你可以简单地写:

Assert (typeof "string" === "array")

在Javascript中,没有本地断言函数,所以你必须使用某个库中的断言函数。

简单介绍,可以查看这篇文章:

http://fredkschott.com/post/2014/05/nodejs-testing-essentials/

我希望这能有所帮助。

其他回答

assert()是JavaScript中的assert函数。断言的主要思想是找出错误发生的原因/位置。

JavaScript本身没有标准的断言。也许你使用的库提供了这样的功能;例如,如果你在使用Node.js,也许你在使用断言模块。(提供实现控制台API的控制台的浏览器和其他环境提供console.assert。)

assert函数的通常含义是,如果传入函数的表达式为false,则抛出一个错误;这是断言检查一般概念的一部分。通常断言(正如它们所称)只在“测试”或“调试”构建中使用,并从生产代码中剥离出来。

假设有一个函数总是接受字符串。你会想知道是否有人用不是字符串的东西(没有像TypeScript或Flow这样的类型检查层)调用了这个函数。你可能会这样做:

assert(typeof argumentName === "string");

...如果条件为假,assert将抛出错误。

一个非常简单的版本是这样的:

function assert(condition, message) {
    if (!condition) {
        throw message || "Assertion failed";
    }
}

更好的是,利用Error对象,它具有收集堆栈跟踪的优点,例如:

function assert(condition, message) {
    if (!condition) {
        throw new Error(message || "Assertion failed");
    }
}

如果你使用webpack,你可以只使用node.js断言库。尽管他们声称它“并不是一个通用的断言库”,但它对于特别的断言似乎已经足够了,而且在Node领域似乎没有竞争对手(Chai是为单元测试而设计的)。

const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");

你需要使用webpack或browserify才能使用它,所以很明显,这只在那些已经在你的工作流中才有用。

Chrome开发工具支持console.assert 你可以打开devtools并在devtools-source-navigator- snippets中创建一个代码段。然后写一些代码……并运行代码片段…

除了其他选项,如控制台。断言或滚动您自己的,您可以使用不变式。它有几个独特的特点:

它支持格式化的错误消息(使用%s说明符)。 在生产环境中(由Node.js或Webpack环境决定),错误消息是可选的,允许(稍微)较小的.js。