新功能字符串的替代选项到真正的javascript

感觉

如果不使用,如何将字符串转换为真正的javascript对象 new Function

var sum = new Function('a', 'b', 'return a + b')
console.log(sum(2, 6))

所以'a', 'b', 'return a + b'是由另一个javascript代码段生成的,所有内容都是字符串格式。eslint建议不要使用Function constrctor。The Function constructor is eval. (no-new-func)如果不使用Function constrctor,还有另一个选项可以完成相同的工作吗?谢谢

TJ人群

...还有其他选择可以做同样的事情吗?

有(eval),但比还要差new Function

从字符串创建函数基本上是不安全的。如果你能完全信任该字符串是安全的,你别无选择,只能一个字符串转换成一个函数,然后new Function是正确的工具。

但是,更好的选择是避免必须从字符串创建函数。


重申“绝对信任”位,这是一个执行此操作的示例:不允许Bob提供字符串,然后在Alice的环境(她的浏览器,或更糟糕的是像Node这样的不受限制的环境)中使用该字符串作为代码。 js)。这样做会使Alice面临安全风险。(显然,在SO之类的网站上,如果Alice是程序员,并且可以在运行代码之前先读取代码,那是不一样的。;-))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章