如果不使用,如何将字符串转换为真正的javascript对象 new Function
var sum = new Function('a', 'b', 'return a + b')
console.log(sum(2, 6))
Run Code Online (Sandbox Code Playgroud)
所以'a', 'b', 'return a + b'是由另一个JavaScript代码段生成的,所有内容都是字符串格式。eslint建议不要使用Function constrctor。The Function constructor is eval. (no-new-func)如果不使用Function constrctor,还有另一个选项可以完成相同的工作吗?谢谢
...还有其他选择可以做同样的事情吗?
有(eval),但比还要差new Function。
从字符串创建函数基本上是不安全的。如果你能完全信任该字符串是安全的,你别无选择,只能一个字符串转换成一个函数,然后new Function是正确的工具。
但是,更好的选择是避免必须从字符串创建函数。
重申“绝对信任”位,这是一个不执行此操作的示例:不允许Bob提供该字符串,然后在Alice的环境(她的浏览器,或更糟糕的是像Node这样的不受限制的环境)中将该字符串用作代码。 js)。这样做会使Alice面临安全风险。(显然,在SO之类的网站上,如果Alice是程序员,并且可以在运行代码之前读取代码,那是不一样的。;-))
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |