var sum=0;
function each(array,callback){
 var i=0,length=array.length;
 for(var v=array[0];i<length;i++){
  v=array[i];
  callback.call(v,i,v);
 }
 return array;
}
var c = each([1,2,3,4,5],function(i,o){
 sum=sum+o;   
});alert(c);这是我在网上找的一个例子,说是最后的输出结果为:1+2+3+4+5
但是为什么输出的结果会是[1,2,3,4,5]呢?能帮忙解释一下吗?

解决方案 »

  1.   

    alert(sum); 才是 15 即 1+2+3+4+5
      

  2.   


    <script>
    var sum=0;
    function each(array,callback){
     var i=0,length=array.length;
     for(var v=array[0];i<length;i++){
      v=array[i];
      callback.call(v,i,v);
     }
     return array;
    }
    var c = each([1,2,3,4,5],function(i,o){
     sum=sum+o;  
    });alert('each函数的返回值是each操作的数组,当然就是'+c+'了,有异议?');
    alert('sun才是参与计算的'+sum);
    </script>
      

  3.   

    alert(c) 的结果肯定是 1,2,3,4,5因为 c 是 each 的返回值是输入参数 array,而 array 就是 [1,2,3,4,5]
      

  4.   

    那each([1,2,3,4,5],function(i,o){
     sum=sum*o;
    });这个呢,结果不对啊
      

  5.   

    没错,因为 var sum=0;永远都是鸭蛋!