V8:创建新的变量范围

时间:2014-03-10 16:08:02

标签: javascript v8

在JavaScript中,当我输入一个新函数时,我得到一个新的局部变量范围。例如。像这样:

function f() {
     var x = 42; // this is in our local variable scope
     // other code
}

我想在V8中做同样的事情。我将other code作为String并通过Script::Compile进行编译,然后通过Script::Run运行。

现在,我创建了一个新的Context,但我认为这是完全矫枉过正的。这也意味着我必须在新环境中重新启动我的全局变量。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望让C ++端脚本在新的隔离上下文中运行,我假设您不希望它意外地混叠或修改全局环境。在这种情况下,在执行代码之前,请执行以下操作:

std::string sScopedCode = "(function(){" + sYourCode + "})();"

这将确保sYourCode中的代码与您可能进行的其他调用保持隔离。