在JavaScript中,当我输入一个新函数时,我得到一个新的局部变量范围。例如。像这样:
function f() {
var x = 42; // this is in our local variable scope
// other code
}
我想在V8中做同样的事情。我将other code
作为String
并通过Script::Compile
进行编译,然后通过Script::Run
运行。
现在,我创建了一个新的Context
,但我认为这是完全矫枉过正的。这也意味着我必须在新环境中重新启动我的全局变量。
答案 0 :(得分:0)
如果我理解正确,您希望让C ++端脚本在新的隔离上下文中运行,我假设您不希望它意外地混叠或修改全局环境。在这种情况下,在执行代码之前,请执行以下操作:
std::string sScopedCode = "(function(){" + sYourCode + "})();"
这将确保sYourCode中的代码与您可能进行的其他调用保持隔离。