javascript - eval() 表达式中包含 "return"

标签 javascript jquery

假设表达式为:

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

然后我这样做:

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

当我运行并更改值时,出现错误,“非法返回语句”。问题是“return false”,没有它就没有问题。

假设我无法更改表达式(从 API 获取),如何在保留中断(返回 false)功能的同时评​​估表达式?

最佳答案

您可以将其放入 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}})();`);
// })

关于javascript - eval() 表达式中包含 "return",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59833086/

相关文章:

javascript - 可以在提交函数中使用 jQuery 获取提交表单的子元素吗?

javascript - 尝试在 Bootstrap 中将两个表单并排放置。任何想法如何?

javascript - 使 flex 元素一次包裹两个

javascript - 如何从远程页面访问 phonegap API

jquery - 如何在 .Net 中预编译 jQuery 模板?

javascript - html字符串中的removeAttr

javascript - 在wordpress中使用ajax加载整个页面

jquery - 不接受 Jquery .html() 中的变量

javascript - Application Insight 中的 JS 异常

javascript - jQuery:动画背景图像