As3.0中的for…in语句和for each…in语句
5.1.1  for..in语句
循环用于循环访问对象属性或数组元素。例如,可以使用 for..in 循环来循环访问
对象的属性(不按任何特定的顺序来保存对象的属性,因此属性可能以随机的顺序
出现)。
例如:
 

AS3代码
  1. var myObj:Object = {x:20y:30};   
  2. for (var i:String in myObj)   
  3. {   
  4. trace(i + ": " + myObj[i]);   
  5. }   

输出:
x: 20
y: 30
还可以循环访问数组中的元素:
 

AS3代码
  1. var myArray:Array = ["one""two""three"];   
  2. for (var i:String in myArray)   
  3. {   
  4. trace(myArray[i]);   
  5. }   

输出:
one
two
three
5.1.2  for each…in语句
for each..in 循环用于循环访问集合中的项目,它可以是 XML 或 XMLList 对象中的标
签、对象属性保存的值或数组元素。例如,如下面所摘录的代码所示,可以使用 for
each..in 循环来循环访问对象的属性,但是与 for..in 循环不同的是,for each..in
循环中的迭代变量包含属性所保存的值,而不包含属性的名称:
 

AS3代码
  1. var myObj:Object = {x:20y:30};   
  2. for each (var num in myObj)   
  3. {   
  4. trace(num);   
  5. }   

输出:
 20
 30
您可以循环访问 XML 或 XMLList 对象,如下面的示例所示:
 

AS3代码
  1. var myXML:XML = <users>   
  2. <fname>Jane</fname>   
  3. <fname>Susan</fname>   
  4. <fname>John</fname>   
  5. </users>;   
  6. for each (var item in myXML.fname)   
  7. {   
  8. trace(item);   
  9. }   

输出
Jane
Susan
John
还可以循环访问数组中的元素,如下面的示例所示:
 

AS3代码
  1. var myArray:Array = ["one""two""three"];   
  2. for each (var item in myArray)   
  3. {   
  4. trace(item);   
  5. }   

输出:
 one
two
 three
5.1.3  for…in语句与for each…in语句的性能比较
1. 在数组中保存一百万个数据
 

AS3代码
  1. var testArr:Array = new Array();   
  2. for(var i:Number = 0; i < 1000000; i++)   
  3. {   
  4.     testArr.push(i);   
  5. }   
  6.   
  7. //for花费260毫秒   
  8. var len:Number = testArr.length;   
  9. for(var j:Number = 0; j < len; j++)   
  10. {   
  11.     testArr[j]++;   
  12. }   
  13. //for ... in花费8000毫秒   
  14. for(var k:String in testArr)   
  15. {   
  16.     testArr[k]++;   
  17. }   
  18. //for each ... in花费58毫秒   
  19. for each (var m:Number in testArr)   
  20. {   
  21.     m++;   
  22. }   
  23.   

经 过多次测试,for 循环平均260毫秒(不预存数组长度平均400毫秒),for … in 循环平均8000毫秒,for each … in 循环58毫秒!!所以应该尽量避免 for … in ,多用 for each … in ,用for循环的话最好预存数组长度(var len:Number = testArr.length;)。
  Object的情况,for … in 平均560毫秒,for each … in 平均8毫秒。
 

AS3代码
  1.   var testObj:Object = new Object();   
  2.   for(var i:Number = 0; i < 100000; i++)   
  3.  {   
  4.      testObj[i] = i + 1;   
  5.  }   
  6.   //for ... in    读取标签    560毫秒   
  7.   for(var j:String in testObj)   
  8.  {   
  9.     testObj[j]++;   
  10.   }   
  11.  //for each ... in    直接读值    8毫秒   
  12.  for each(var k:Number in testObj)   
  13. {    
  14.      k++;   
  15. }    

结论:
    for each...in语句的速度比for...in语句要快得多,如果有可能,还是先选择for each...in
 

 

(本文转自网络)