assert在JavaScript中是什么意思?

我见过类似这样的事情:

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

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

推荐答案

JavaScript本身没有标准assert.也许你正在使用某个图书馆提供一个;例如,如果使用Node.js,也许你用的是assertion module.(浏览器和其他提供实现Console API的控制台的环境提供了console.assert.)

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

假设你有一个函数,它应该接受一个字符串.您可能想知道是否有人用非字符串的东西调用了该函数(没有像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");
    }
}

Javascript相关问答推荐

如何在JavaScript中在文本内容中添加新行

如何为GrapesJS模板编辑器创建自定义撤销/重复按钮?

我试图实现用户验证的reduxstore 和操作中出了什么问题?

Chromium会将URL与JS一起传递到V8吗?

阿波罗返回的数据错误,但在网络判断器中是正确的

XSLT处理器未运行

用JS从平面文件构建树形 struct 的JSON

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

TypeError:无法分解';React2.useContext(...)';的属性';basename';,因为它为空

如何将未排序的元素追加到数组的末尾?

如何使用TypeScrip设置唯一属性?

我想将Sitecore搜索面过滤器从多个转换为单个

自定义图表工具提示以仅显示Y值

Next.js中的服务器端组件列表筛选

当我点击一个按钮后按回车键时,如何阻止它再次被点击

Node.js API-queryAll()中的MarkLogic数据移动

我在哪里添加过滤器值到这个函数?

如何使用Cypress在IFRAME中打字

在对象的嵌套数组中添加两个属性

如何使用useparams从react路由中提取id