访问局部变量的匿名函数[ActionScript - Flex 3.5]

时间:2010-06-08 20:23:53

标签: flex actionscript-3

我的动作脚本/弹性前端有这种情况。

 for each (var sym:String in ["A","B","C"]) {

                const handler = function (data:Object):void { Alert.show(sym); }                

                asyncCallback(handler);

   }

我希望有3个警报窗口包含A,B和C.但实际结果是3个警告窗口都显示C!

1 个答案:

答案 0 :(得分:1)

这个有点棘手。您必须将处理程序创建包装在另一个函数中。

尝试:

for each(var sym:String in ["A","B","C"]) {
    function createHandler(val:String):Function {
        var handler = function(data:Object):void { 
            trace(val); 
        }
        return handler;
    }
    var handler:Function = createHandler(sym);
    asyncCallback(handler);
}