eval (), который содержит «return» в выражении - PullRequest
1 голос
/ 21 января 2020

Допустим, выражение имеет вид:

var ex = "console.log(123); return false; console.log(456)"

Затем я делаю это:

$('#id').change(function(){
    eval(ex)
})

Когда я запускаю и изменяю значение, я получаю ошибку, "Недопустимый возврат утверждение ". Проблема в том, что "return false" , где без него нет проблем.

Предполагая, что я не могу изменить выражение (полученное из API), как оценить выражение, сохранив разрыв ( вернуть false) функциональность?

1 Ответ

2 голосов
/ 21 января 2020

Вы можете поместить его в new Function вместо:

var ex = "console.log(123); return false; console.log(456)"

// $('#id').change(function(){
  const fn = new Function(ex);
  fn();
// })

Может также окружать строку с (() => { и })();:

var ex = "console.log(123); return false; console.log(456)"

// $('#id').change(function(){
  eval(`(() => {${ex}})();`);
// })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...