有没有办法在调用时指定用于全局eval()
的对象?
(我不是在问如何进行全局 eval()。)
这不起作用,但这说明了我想要的:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
关键是真正的全局绑定不受代码 eval() 中的隐式变量声明(即没有var关键字)的影响。
至于eval.call(pseudoGlobal, "x=12")
or eval.apply(pseudoGlobal, ["x=12"])
,有些口译员是不允许的。