var oldArray:Array = new Array("a", "o", "a", "o", "a", "o", "a", "o");
for (var i:int = 0; i < oldArray.length; i++) {
if (i % 2 == 0) {
trace("go to array 1 " + i);
applesArray.push(oldArray[i]);
}
if (i % 2 != 0) {
trace("go to array 2 " + i);
orangesArray.push(oldArray[i]);
}
}
前两条痕迹按照我的预期出现,但如果我跟踪一条阿雷和两条阿雷,它们就会出现同样的情况。
迹(applesArray); 迹(orangesArray);
他们怎么可能一样?
答案 0 :(得分:2)
我只能重现&#34;错误&#34;使用此代码:
var oldArray:Array = new Array("a", "o", "a", "o", "a", "o", "a", "o");
var applesArray:Array;
var orangesArray:Array;
applesArray = orangesArray = [];//this makes it invalid
for (var i:int = 0; i < oldArray.length; i++) {
if (i % 2 == 0) {
trace("go to array 1 " + i);
applesArray.push(oldArray[i]);
}
if (i % 2 != 0) {
trace("go to array 2 " + i);
orangesArray.push(oldArray[i]);
}
}
trace(applesArray);
trace(orangesArray);
//traces output
go to array 1 0
go to array 2 1
go to array 1 2
go to array 2 3
go to array 1 4
go to array 2 5
go to array 1 6
go to array 2 7
a,o,a,o,a,o,a,o
a,o,a,o,a,o,a,o
如果它是你所做的那么你必须记住,Array不是原始对象,就像一个通过值传递的数字,像其他复杂对象一样的数组通过引用传递,并且你的两个变量都指向同一个对象。 / p>