AS3(或AS2) - 全局变量作为本地内部函数

时间:2013-03-20 08:51:45

标签: actionscript-3 flash actionscript

我假设有一些容易让我在这里俯瞰的东西。 但基本上,我想做的只是简单..我想代码会更好解释,在这里:

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       trace(i);
   }
}

基本上,我理解这里发生了什么..我作为全局变量发生变化,所以如果我执行该函数,它将检索i的最后一个值,而不管它在分配时是什么。基本上我试图弄清楚这是用什么方法将i转换为全局,转换为本地,这样当我在对象上执行函数时,它将输出变量,因为它被赋值。

希望这是可以理解和直截了当的。提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果在函数声明的右括号后添加括号,它将运行函数:

var tobj = [new Object(),new Object(), new Object()];

for(var i = 0; i < tobj.length; i++) {
     tobj[i].func = function() {
     trace(i);
}() // < ------

这将追踪:“0”,“1”,“2”

答案 1 :(得分:0)

简单解决方案......可能还有另一种方式,但这对我有用。离开它只是几分钟。

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       assigner(i);
   }
}

function assigner(var) {
   trace(var);
}