最近,我被批评为构造我的for
循环,如此:
var i:MovieClip;
for each(i in array)
{
// be awesome
}
或者,
var i:uint = 0;
for(i; i<10; i++)
{
// be more awesome
}
这对我个人而言更好,但我受到了攻击。是否有任何差异?
答案 0 :(得分:5)
旧答案
是的:你这样做的方式,变量在循环结束后继续存在。确保变量不存在于循环范围之外,可确保您不会在循环外意外地引用该变量。
<强>更新强>
至少大多数语言都是这样做的。但是,在ActionScript中,for循环变量在父级的范围内!因此,在ActionScript 中确实没有区别。
答案 1 :(得分:3)
trutheality的答案是大多数语言中最好的考虑因素,并且考虑到这个问题直到后来都没有标记为actionscript-3,这是一个很好的回答。
然而,Actionscript使用变量提升,其中函数中定义 where 的变量的范围限定为该函数,而不是其最内部的块。这个blog post很好地描述了它,并在docs on variable scope中提到了它。由于提升,在循环之前或之内定义变量之间没有差异
为了表明这有多疯狂,你甚至可以在循环之后定义变量:
for (i = 0; i < 5; i++) {
trace(i);
}
var i:int;