JavaScript是否与VBScript';谁是执行官?

JavaScript是否与VBScript';谁是执行官?,javascript,vbscript,Javascript,Vbscript,javascript中是否有ExecuteGlobal的替代方案 Function vbExecuteGlobal(parmSCRIPT) ExecuteGlobal(parmSCRIPT) End Function DevGuru[描述声明]如: ExecuteGlobal语句接受单个字符串参数,将其解释为VBScript语句或语句序列,并在全局命名空间中执行这些语句 等价于VBScript的Execute[Global]的Javascript是eval()。传递的代码在调用的上下文

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()解决;对于某些问题,可能需要额外的工作或技巧


正如阿披舍克明确表示的“我想用javascript评估javascript”,我觉得没有必要证明我的回答是正确的。

如果某个东西以代码形式执行字符串,那么解决方案就是重构它,使其不会。您不应该将代码保留在字符串中。您“可以”使用
setTimeout(code,0)
。。。但是你确定你真的需要这个吗?我同意昆汀的观点。@FelixKling-我本打算提出这个建议(带有可怕的警告),但在大多数JS引擎中都有一个最小超时,它会异步计算代码。你能澄清一下吗,你想在javascript中全局评估javascript还是在javascript中评估vbscript?事实上,我正在进行跨浏览器编码,我有一些混合了vbscript和javascript的旧代码,除了IE之外,所有浏览器都不支持vbscript。因此,他们在javascript中调用此vbscript函数,该函数仅在IE中运行良好,我如何才能在javascript中执行。。。我想用javascript或任何其他解决方案评估javascript。。在你的回答中,你说它是在调用的上下文中评估的(不是全局的),所以你必须知道它不是等价的。那么,为什么会有答案呢?