public class ForEachTest extends Sprite { private var _len:int = 500000; private var _arr1:Vector.<Number>; private var _arr2:Vector.<Number>; private var _arr3:Vector.<Number>; private var _arr4:Vector.<Number>; private var _arr5:Vector.<Number>; public function ForEachTest() { super(); _arr1 = new Vector.<Number>(_len); _arr2 = new Vector.<Number>(_len); _arr3 = new Vector.<Number>(_len); _arr4 = new Vector.<Number>(_len); _arr5 = new Vector.<Number>; test(); } private function test():void { var time:int; time = getTimer(); for(var i:int=0; i<_len; i++) { _arr5.push(1); } traceTime("push", time); time = getTimer(); _arr4.forEach(arrFunction3); function arrFunction3(item:Number, index:int, arr:Vector.<Number>):void { arr[index] = 1; } traceTime("内联:", time); time = getTimer(); _arr2.forEach(arrFunction1); traceTime("item", time); time = getTimer(); _arr3.forEach(arrFunction2); traceTime("index", time); var len1:int = _arr1.length; time = getTimer(); for(var j:int=0; j<len1; j++) { _arr1[j] = 1; } traceTime("i=", time); } private function arrFunction1(item:Number, index:int, arr:Vector.<Number>):void { arr[index] = 1; } private function arrFunction2(item:Number, index:int, arr:Vector.<Number>):void { arr[index] = 1; } private function traceTime(name:String, start:int):void { trace(name, getTimer() - start); } } 比较效率后,发现还是最原始的 for(var i=0; i<len; i++)效率最高……