gpt4 book ai didi

Javascript Eval 和 Function 构造函数的使用

转载 作者:行者123 更新时间:2023-11-28 02:32:45 24 4
gpt4 key购买 nike

我目前正在试验 self 复制代码。出于对这门语言的热爱,我想用 javascript 编写它。

我正在开发一个程序,该程序编写一个函数的代码,该函数又编写其函数自己的代码,依此类推。基本上,所需的过程是这样的:

  1. 我手动创建一个函数,该函数返回代码(包括一些随机性)和数值(建议的问题解决方案)。
  2. 我多次调用此函数,评估每个返回函数的结果,然后继续该过程,直到获得足够适合我想要执行的操作的代码。

现在,我总是被告知如何 eval is evil , 如何never to use it等等。然而,对于我的特定用例,函数构造函数或 eval 似乎正是我正在寻找的。

所以,简而言之,问题是:

eval/Function 构造函数确实是我的情况下使用的最佳工具吗?如果是这样,我想我应该使用 Function 构造函数来限制执行的代码的范围,但是有没有办法真正限制它访问全局范围?另外,在我的案例中,评估使用有哪些好的做法?

最佳答案

我想我刚刚找到了一些我可以使用的东西:

如果我使用 node.js 运行我的 javascript 代码,我可以使用 vm模块允许我在新的上下文中安全地执行 javascript 代码,并且不允许执行的代码对本地或全局范围进行任何访问。

vm.runInNewContext compiles code, then runs it in sandbox and returns the result. Running code does not have access to local scope. The object sandbox will be used as the global object for code. sandbox and filename are optional, filename is only used in stack traces.

您可以在此处查看完整示例:vm.runInNewContext

这将使我能够安全地评估代码,并且似乎是(我发现)当前可用的最安全的方法。我认为这是比 eval 或调用 Function 构造函数更好的解决方案。

感谢所有提供帮助的人。

关于Javascript Eval 和 Function 构造函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892791/

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