JavaScript是否与VBScript';谁是执行官?
javascript中是否有ExecuteGlobal的替代方案JavaScript是否与VBScript';谁是执行官?,javascript,vbscript,Javascript,Vbscript,javascript中是否有ExecuteGlobal的替代方案 Function vbExecuteGlobal(parmSCRIPT) ExecuteGlobal(parmSCRIPT) End Function DevGuru[描述声明]如: ExecuteGlobal语句接受单个字符串参数,将其解释为VBScript语句或语句序列,并在全局命名空间中执行这些语句 等价于VBScript的Execute[Global]的Javascript是eval()。传递的代码在调用的上下文
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()解决;对于某些问题,可能需要额外的工作或技巧
正如阿披舍克明确表示的“我想用javascript评估javascript”,我觉得没有必要证明我的回答是正确的。如果某个东西以代码形式执行字符串,那么解决方案就是重构它,使其不会。您不应该将代码保留在字符串中。您“可以”使用
setTimeout(code,0)
。。。但是你确定你真的需要这个吗?我同意昆汀的观点。@FelixKling-我本打算提出这个建议(带有可怕的警告),但在大多数JS引擎中都有一个最小超时,它会异步计算代码。你能澄清一下吗,你想在javascript中全局评估javascript还是在javascript中评估vbscript?事实上,我正在进行跨浏览器编码,我有一些混合了vbscript和javascript的旧代码,除了IE之外,所有浏览器都不支持vbscript。因此,他们在javascript中调用此vbscript函数,该函数仅在IE中运行良好,我如何才能在javascript中执行。。。我想用javascript或任何其他解决方案评估javascript。。在你的回答中,你说它是在调用的上下文中评估的(不是全局的),所以你必须知道它不是等价的。那么,为什么会有答案呢?