3

javascript で ExecuteGlobal に代わるものはありますか?

Function vbExecuteGlobal(parmSCRIPT)
    ExecuteGlobal(parmSCRIPT)
End Function

DevGuru は [声明を説明] など:

ExecuteGlobal ステートメントは単一の文字列引数を取り、それを VBScript ステートメントまたは一連のステートメントとして解釈し、これらのステートメントをグローバル名前空間で実行します。

4

1 に答える 1

1

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

于 2012-07-13T09:43:49.377 に答える