JavaScript有相当于VBScript的ExecuteGlobal吗?

时间:2012-07-13 09:29:52

标签: javascript vbscript

javascript中有ExecuteGlobal的替代品吗?

Function vbExecuteGlobal(parmSCRIPT)
    ExecuteGlobal(parmSCRIPT)
End Function

DevGuru [描述声明]如下:

  

ExecuteGlobal语句接受单个字符串参数,将其解释为VBScript语句或语句序列,并在全局名称空间中执行这些语句。

1 个答案:

答案 0 :(得分:1)

相当于VBScript的Execute [Global]的Javascript是eval()。传递的代码在调用的上下文中进行评估。

请参阅here for details, pros and cons

<强>更新

不推荐这样的做法,而是澄清我对等同性的理解:

// 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”,我觉得不需要证明我的答案是合理的。