JavaScript: преобразование выражения в строку - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь найти способ привести выражение, такое как выражение условия, в строку без обработки обрабатываемого выражения.

Я попытался использовать метод .toString () для параметра 'condition'в следующей функции 'assert'.

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 Ответ

1 голос
/ 11 июля 2019

Нет способа сделать это так; выражение вычисляется еще до того, как ваша функция вызывается, и только ее результирующее значение передается вашей функции. Вы можете указать выражение в виде строки для начала и оценить его как eval(condition), но имейте в виду, что eval не одобряется, так как может быть легко случайно ввести уязвимости безопасности таким образом.

Способ console.assert() заключается в том, что выражение является одним аргументом, а затем настраиваемая метка (в виде строки) является вторым аргументом, так что вы можете указать метку самостоятельно, в том числе просто скопировать / вставить выражение и поместить это в кавычках для строки.

...