JavaScript:将表达式转换为字符串

时间:2019-07-11 20:07:42

标签: javascript string casting type-conversion expression

我试图找到一种方法,将条件语句之类的表达式转换为字符串,而无需对该表达式进行处理。

我尝试在以下“声明”功能的“条件”参数上使用.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

1 个答案:

答案 0 :(得分:1)

没有办法做到这一点;该表达式在函数被调用之前就已求值,并且只有其结果值才传递给函数。您可以将表达式作为字符串开头,然后用eval(condition)进行评估,但是要警告eval令人厌烦,因为这样很容易意外引入安全漏洞。

console.assert()处理此问题的方式是,表达式是一个参数,然后自定义标签(作为字符串)是第二个参数,因此您可以自己指定标签,包括仅复制/粘贴表达式并用引号引起来的字符串。