呼び出し時にグローバルに使用するオブジェクトを指定する方法はありますeval()
か?
(グローバル eval() の実行方法を尋ねているわけではありません。)
これは機能していませんが、これは私が望むものを示しています:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
要点は、実際のグローバル バインディングは、eval() されたコード内の暗黙の変数宣言 (つまり、 varキーワードなし) の影響を受けないということです。
eval.call(pseudoGlobal, "x=12")
またはに関してeval.apply(pseudoGlobal, ["x=12"])
は、一部のインタープリターはそれを許可しません。