除了eval()
和Function constructor
之外,是否还有其他解决方案可以从字符串var创建js-function
出于安全原因,我不允许使用这两种方法。
当您使用js代码创建DOM元素并添加到页面时,我知道解决方案,但它绝对是脏的黑客。 非常感谢你的帮助。
====
ADD
我收到的json-data字符串如" a === b","!a","(a&& b)|| C"等等...(数百种组合)。需要创建和返回可以做比较功能的函数。
东西
var test = function ('a === b') {
//some code without eval and new Function()
}
// in console
test('aa', 'bb') // return false
答案 0 :(得分:2)
感谢大家的有趣答案。
所以,我读过并试图使用你建议我的所有方法。 所有这些都是eval(),即使你不会在你的代码中使用eval。 在我的项目中,我使用WebWorkers解决了问题。这项技术有很多好处,请阅读MDN https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
中的文章但是,我必须为此方法使用“new Function”。
所以正确答案是:
如果没有eval和new Function(),则无法从字符串创建函数。
为此编写自己的简单解析器的唯一方法。
感谢 @brianxautumn