gpt4 book ai didi

javascript - 新函数字符串到真实 javascript 的替代选项

转载 作者:行者123 更新时间:2023-12-03 22:17:01 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Create js function from string without eval and new Function()

(1 个回答)


2年前关闭。




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

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 是否有另一种选择可以做同样的工作?谢谢

最佳答案

...is there another option can do the same job?



有( eval ),但比 new Function 还要糟糕.

从字符串创建函数从根本上来说是不安全的。如果可以的话 绝对相信字符串是安全的,而您 别无选择但是要将字符串转换为函数,则 new Function是正确的工具。

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

关于“绝对信任”这一点,这里有一个例子 不是 要做的事:不要让 Bob 提供字符串,然后在 Alice 的环境(她的浏览器,或者更糟的不受限制的环境(如 Node.js)中)使用该字符串作为代码。这样做会使 Alice 面临安全风险。 (显然,在像 SO 这样的网站上,如果 Alice 是一名程序员并且可以在运行之前阅读代码,那就不同了。;-))

关于javascript - 新函数字符串到真实 javascript 的替代选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com