从字符串创建 js 函数,不带 eval 和新的 Function()



除了eval()Function constructor之外,是否有任何其他解决方案可以从字符串var创建js函数出于安全原因,我不允许使用这两种方法。

当您使用 js 代码创建 DOM 元素并添加到页面时,我知道解决方案,但这绝对是肮脏的黑客。非常感谢您的帮助。

====

我收到了带有"a === b"、"!a"、"(a && b( || c"等字符串的 json 数据......(数百种组合(。需要创建和返回可以执行此比较功能的函数。

东西

var test = function ('a === b') {
  //some code without eval and new Function()
}
// in console
test('aa', 'bb') // return false

感谢大家的有趣回答。

所以,我已经阅读并尝试使用你建议我的所有方法。所有这些都是 eval(( 即使你不会在你的代码中使用 eval。在我的项目中,我修复了使用WebWorkers的问题。这项技术有很多好处,请阅读MDN中的文章 https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

但是,我必须为此方法使用"新功能"。

所以正确答案是:

你不能从字符串创建函数,没有 eval 和新的 Function((。

唯一的方法是为此编写自己的简单解析器。

谢谢@brianxautumn

最新更新