在 JavaScript 中,当我输入一个新函数时,我会得到一个新的局部变量作用域。例如。像这样:
function f() {
var x = 42; // this is in our local variable scope
// other code
}
我现在想在 V8 中做同样的事情。我有 其他代码
作为 String
并通过 Script::Compile
编译它并通过 Script::Run
运行它>.
现在,我创建了一个新的Context
,但我认为这完全是多余的。这也意味着我必须在新的上下文中重新初始化我的全局变量。
最佳答案
如果我理解正确,我认为您希望让 C++ 端脚本在新的隔离上下文中运行,因为您不希望它意外别名或修改全局环境。在这种情况下,在执行代码之前,请执行以下操作:
std::string sScopedCode = "(function(){" + sYourCode + "})();"
这将确保 sYourCode 中的代码与您可能进行的其他调用保持隔离。
关于javascript - V8:创建新的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305316/