javascript中是否有任何替代ExecuteGlobal的方法?
Function vbExecuteGlobal(parmSCRIPT)
ExecuteGlobal(parmSCRIPT)
End Function
DevGuru [描述声明] 这样的:
ExecuteGlobal 语句采用单个字符串参数,将其解释为 VBScript 语句或语句序列,并在全局命名空间中执行这些语句。
javascript中是否有任何替代ExecuteGlobal的方法?
Function vbExecuteGlobal(parmSCRIPT)
ExecuteGlobal(parmSCRIPT)
End Function
DevGuru [描述声明] 这样的:
ExecuteGlobal 语句采用单个字符串参数,将其解释为 VBScript 语句或语句序列,并在全局命名空间中执行这些语句。
与 VBScript 的 Execute[Global] 等效的 Javascript 是 eval()。传递的代码在调用的上下文中进行评估。
有关详细信息,优点和缺点,请参见此处
更新
不推荐这种做法,而是澄清我对等价的理解:
// calling eval in global context is the exact equivalent of ExecuteGlobal
eval("function f0() {print('f0(): yes, we can!');}");
f0();
// calling eval in locally is the exact equivalent of Execute
function eval00() {
eval("function f1() {print('f1(): no, we can not!');}");
f1();
}
eval00();
try {
f1();
}
catch(e) {
print("** error:", e.message);
}
// dirty trick to affect global from local context
function eval01() {
eval("f2 = function () {print('f2(): yes, we can use dirty tricks!');}");
f2();
}
eval01();
f2();
输出:
js> load("EvalDemo.js")
f0(): yes, we can!
f1(): no, we can not!
** error: "f1" is not defined.
f2(): yes, we can use dirty tricks!
f2(): yes, we can use dirty tricks!
所以:VBScript 中可以使用 Execute[Global] 解决的问题,可以使用 Javascript 中的 eval() 来解决;对于某些问题,可能需要额外的工作或技巧。
正如 Abhishek 明确表示“我想在 javascript 中评估 javascript”,我觉得没有必要证明我的回答是正确的。