长话短说:
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”变量表示。
经过一番思考,我明白了为什么会这样,但是有没有办法让 js 在我声明匿名函数时评估 o 而无需处理 id 属性并从那里获取我的 ID?
我的完整源代码在这里: http: //pastebin.com/GMieerdw
匿名函数在第 303 行。