我正在尝试找到一种方法,将表达式(例如条件语句)转换为字符串,而无需处理表达式。
我尝试在以下“assert”函数中的“condition”参数上使用 .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);
实际错误消息:断言失败:false
预期错误消息:断言失败:配置中的“用户名”
最佳答案
没有办法这样做;甚至在调用函数之前都会计算表达式,并且仅将其结果值传递给您的函数。您可以首先将表达式作为字符串提供,并使用 eval(condition)
对其求值,但请注意 eval
不受欢迎,因为它很容易意外以这种方式引入安全漏洞。
console.assert() 处理此问题的方式是表达式是一个参数,然后自定义标签(作为字符串)是第二个参数,因此您可以自己指定标签,包括复制/粘贴表达式并将其放在字符串的引号中。
关于JavaScript:将表达式转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996575/