我有一个 javascript 文件,它读取另一个文件,该文件可能包含需要 eval()-ed 的 javascript 片段。脚本片段应该符合严格的 javascript 子集,它限制了它们可以做什么以及它们可以更改哪些变量,但我想知道是否有某种方法可以通过阻止 eval 看到全局范围内的变量来强制执行此操作. 类似于以下内容:
function safeEval( fragment )
{
var localVariable = g_Variable;
{
// do magic scoping here so that the eval fragment can see localVariable
// but not g_Variable or anything else outside function scope
eval( fragment );
}
}
实际的代码不需要看起来像这样——我对任何和所有奇怪的闭包技巧都持开放态度,等等。但我确实想知道这是否可能。