断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
断言在JavaScript中是什么意思?
我见过这样的情况:
assert(function1() && function2() && function3(), "some text");
并且想知道assert()方法做什么。
当前回答
除了其他选项,如控制台。断言或滚动您自己的,您可以使用不变式。它有几个独特的特点:
它支持格式化的错误消息(使用%s说明符)。 在生产环境中(由Node.js或Webpack环境决定),错误消息是可选的,允许(稍微)较小的.js。
其他回答
以前的答案可以在性能和兼容性方面得到改进。
检查一次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函数的行号,这对调试没有用处。
Chrome开发工具支持console.assert 你可以打开devtools并在devtools-source-navigator- snippets中创建一个代码段。然后写一些代码……并运行代码片段…
正如t.j.所提到的,JavaScript中没有断言。 但是,有一个名为assert的节点模块,主要用于测试。所以,你可能会看到这样的代码:
const assert = require('assert');
assert(5 > 7);
如果断言为假,则显示该消息。具体来说,如果第一个参数为假,则第二个参数(字符串消息)将被记录在开发人员工具控制台中。如果第一个参数是正确的,基本上什么都不会发生。一个简单的例子-我使用谷歌开发工具:
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.');
除了其他选项,如控制台。断言或滚动您自己的,您可以使用不变式。它有几个独特的特点:
它支持格式化的错误消息(使用%s说明符)。 在生产环境中(由Node.js或Webpack环境决定),错误消息是可选的,允许(稍微)较小的.js。