javascript - V8:创建新的变量范围

标签 javascript v8

在 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/

相关文章:

javascript - 拦截 Web 浏览器控制台消息

javascript - 使用 oembed 嵌入 youtube 视频

javascript - 中止 Meteor.js 中的链接重定向

javascript - V8不会优化超过4种对象类型?

javascript - 如何在 C++ 中从 V8 调用 Javascript 函数

javascript - 你如何在谷歌的 v8 中包含另一个 js 文件?

javascript - 将多维 JSON 数组转换为 JS 变量

javascript - 64 位位掩码和 javascript

JavaScript 专家 : Do block-scopes with `{}` and anonymous functions both help garbage-collection?

c++ - 如何在没有 OO 的情况下关联值(value)和功能