AS3 - for (... in ...) vs for each (... in ...)

Posted

技术标签:

【中文标题】AS3 - for (... in ...) vs for each (... in ...)【英文标题】: 【发布时间】:2011-10-31 13:02:27 【问题描述】:

下面的代码做同样的事情。 for eachfor (... in ...) 有区别吗?

var bar:Array = new Array(1,2,3);    

for (var foo in bar)
    trace(foo);


for each (var foo2 in bar)
    trace(foo2);

【问题讨论】:

更像是“for (... in ...) vs for each (... in ...)” 【参考方案1】:

不,他们做完全相同的事情。

for..in 循环的输出是

0
1
2

而你的 for each..in 循环的输出是

1
2
3

for..in 循环遍历数组的键/索引或对象的属性名称。 for each..in 循环遍历 。您得到上述结果是因为您的 bar 数组的结构如下:

bar[0] = 1;
bar[1] = 2;
bar[2] = 3;

【讨论】:

【参考方案2】:

这里的一些混淆是您在数组中使用数字。让我们切换到字符串,看看会发生什么。

var bar:Array = new Array("x", "y", "z");    

for (var foo in bar)
    trace(foo);


for each (var foo2 in bar)
    trace(foo2);

现在你的输出是:

0
1
2
x
y
z

如您所见,for-in 循环遍历 索引(或键),for-each-in 循环遍历 价值观

【讨论】:

以上是关于AS3 - for (... in ...) vs for each (... in ...)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript ??? 4 ???????????????????????? for VS forEach() VS for/in VS for/of

ES6: for...of VS for...in

ts for..of vs. for..in 语句

javascript for-for vs for-in循环

for-in vs Object.keys forEach 没有继承属性

as3里面的dictionary的遍历