在这两段代码中为什么用return才能实现?用alert却不能呢?


图片描述


 /* function sum_num(){  
    var total = 0;  
    for(var i=0;i<arguments .length;i++){  
        total+=arguments[i];  
    }  
    return total;  
}  

alert(sum_num(2,34,45,56,56)); */

 function sum_num(){  
    var total = 0;  
    for(var i=0;i<arguments .length;i++){  
        total+=arguments[i];  
    }  
     alert(sum_num(total)); 
}  

sum_num();

求大神解答呀?

前端 编程语言 JavaScript

虚弱的西瓜瓜 11 years, 9 months ago

InternalError: too much recursion

... for(var i=0;i<arguments .length;i++){
total+=arguments[i];
} ...

使用递归去实现你期望的逻辑是错误的,你期望的是获取所有的参数的和,但是你的递归没有结束条件,所以导致死循环,但是就算是有结束条件,递归也不是这么用的

少年煮温水 answered 11 years, 9 months ago

同意楼上。。


 javascript


 alert(sum_num(total)); // 这里岂不是递归了,改为alert(total)就OK了

震爹一下巧克力 answered 11 years, 9 months ago

递归调用sum_num

白鹿爱莉的说 answered 11 years, 9 months ago

你的代码应该是递归调用sum_num了,可以写成alert(total)。

2220582 answered 11 years, 9 months ago

Your Answer