老是,忘记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 = <users>
2 <fname>Jane</fname>
3 <fname>Susan</fname>
4 <fname>John</fname>
5 </users>;
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