老是,忘记for 与 for each的区别:
与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
例如: 1 var myObj:Object = {x:20, y:30}; 2 for (var i:String in myObj) { 3 trace (i + ": " + myObj[i]); 4 } 5 // output: 6 // x: 20 7 // y: 30 由上代码可知道for..in是把数组的元素或对象的属性名 依次取过来。 1 var myObj:Object = {x:20, y:30}; 2 for each(var num in myObj) { 3 trace (num); 4 } 5 // output: 6 // 20 7 // 30 由上代码可知道for each..in是把对象的属性名对应的值 依次取过来。 1 var myArray:Array = ["one", "two", "three"]; 2 for (var i:String in myArray) { 3 trace (myArray[i]); 4 } 5 /* output 6 one 7 two 8 three 9 */ 10 如果用for each..in返回将是undefined。 对于XML文档: 1 var myXML:XML = 2 Jane 3 Susan 4 John 5 ; 6 for (var item in myXML.fname) { 7 trace(item); 8 } 9 /* output 10 0 11 1 12 2 13 */ 14 如果用for each..in返回的将是: 1 /* output 2 Jane 3 Susan 4 John 5 */ 6