簡単に言えば:
var o="before";
x = function() //this needs to be an anonymous function
{
alert(o); //the variable "o" is from the parent scope
};
o="after"; //this chages "o" in the anonymous function
x();
//this results in in alert("after");
//which is not the way i want/need it
実際には、私のコードはもう少し複雑です。
私のスクリプトは多くの html オブジェクトを繰り返し処理し、要素ごとにイベント リスナーを追加します。
これを行うには、要素ごとに無名関数を宣言し、ID を引数として別の関数を呼び出します。その ID は、この例では "o" 変数で表されます。
しばらく考えた後、なぜそうなのか理解しましたが、id属性を処理してそこからIDを取得せずに匿名関数を宣言するときに、jsにoを評価させる方法はありますか?
私の完全なソースコードはここにあります: http://pastebin.com/GMieerdw
無名関数は 303 行目にあります。