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 を評価したい」と明言したように、私は自分の答えを正当化する必要はないと感じています。