我试图找到一种方法,将条件语句之类的表达式转换为字符串,而无需对该表达式进行处理。
我尝试在以下“声明”功能的“条件”参数上使用.toString()方法。
const config = {
usernme: 'username1',
password: 'password1'
}
function assert(condition, message) {
if (!condition) {
message = message || `Assertion failed: ${condition.toString()}`;
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
assert('username' in config);
实际错误消息:Assertion failed: false
预期的错误消息:Assertion failed: 'username' in config
答案 0 :(得分:1)
没有办法做到这一点;该表达式在函数被调用之前就已求值,并且只有其结果值才传递给函数。您可以将表达式作为字符串开头,然后用eval(condition)
进行评估,但是要警告eval
令人厌烦,因为这样很容易意外引入安全漏洞。
console.assert()
处理此问题的方式是,表达式是一个参数,然后自定义标签(作为字符串)是第二个参数,因此您可以自己指定标签,包括仅复制/粘贴表达式并用引号引起来的字符串。