1
我想知道new Function(效果 - eval)和vm
模块之间的区别是什么。new Function和vm有什么区别?
表面上,这些似乎是相似的:
- 两者都可以被限制到特定的上下文(在
vm
使用context
和使用parameters在Function
构造函数)。 vm
可以使用runInContext
在多个调用之间重新使用上下文。new Function
可以使用参数重新使用相同的上下文。
但是,一个简单的基准测试结果显示,在vm
和new Function
之间的性能差异非常显着。因此,我假设每种方法都有一个根本区别。
我想了解不同之处,以便做出有教育的决定何时使用哪种工具。
我知道有类似的问题(Node.JS vm.runInNewContext() vs require() and eval())。然而,这个问题已经讨论了eval
和require
之间的差异。它没有解决eval
和vm
模块之间的差异。
嗯,看起来像'new Function'可以在node.js中创建局部变量。看看我的问题在这里的答案:https://stackoverflow.com/questions/46440029/how-can-i-dynamically-create-a-variable-dynamically-in-the-current-scope-in-java#46440182 –
不,在这个例子中,它是设置一个全局的。通过删除你的''eval''var',全局变得对模块代码中的'a.b'的设置变得明显,并且因此记录到日志中。 –
啊,我看到......可怕 –