Javascript 求和问题

在自学Javascript中,看到一道题,要求用rest参数编写一个sum()函数,接收任意个参数并返回它们的和我的写法如下:functionsum(...rest){i... 在自学Javascript中,看到一道题,要求用rest参数编写一个sum()函数,接收任意个参数并返回它们的和

我的写法如下:
function sum(...rest) {
if (arguments.length === 0) {
return 0;
}
var result=0;
for (var i = arguments.length; i>0; i--){
result = result + arguments[i];
}
return result;
}
结果计算错误。
有一个正确的写法,如下:
function sum(...rest) {

if (arguments.length === 0) {

return 0;

}

let result = 0;

for (let i = rest.length; i > 0; i--) {

result += rest.pop();

}

return result;

}
我想知道我的写法为什么是错的,报出来的结果是Nan。以及rest参数到底怎么用,算是一个array嘛?谢谢
展开
 我来答
随性亻
推荐于2016-11-21 · TA获得超过4180个赞
知道小有建树答主
回答量:4622
采纳率:84%
帮助的人:640万
展开全部
代码不全,不知道你的rest参数怎么传的,你可以这样写:
var totalsum=0;
//每次加加时就调用这个方法,最后计算的结果就是totalsum
function sum(rest){
totalsum+=parseInt(rest);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
濒危物种1718
2019-07-14 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6857
采纳率:100%
帮助的人:49.1万
展开全部
给每个文本框取一个id,比如iptid1--iptid10。
这些id的名称都是根据你的文本框递增来变化的,比如你有5个,那你五个文本框的id就分别是iptid1,iptid2,iptid3,iptid4,iptid5。
取总值的时候可以这样
document.getelementbyid("iptid1").value这样就可以取到一个文本框的值了,然后求和即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
基操勿六皆坐之
2018-04-07 · TA获得超过130个赞
知道答主
回答量:72
采纳率:100%
帮助的人:26.1万
展开全部

问题出在for循环,

for (var i = arguments.length; i>0; i--){

result = result + arguments[i];

因为,i--,之后arguments[i]中的i在这次循环中还没减1,所以访问的数组数据不存在。

举例sum(3),i = arguments.length=1;i>0;i--;但是i在这次循环体中的值还是1,arguments[i]=arguments[1]是不存在的。

改成arguments[i-1]即可。关于++、--等这些运算参考这篇文章

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7275960
推荐于2018-04-13
知道答主
回答量:2
采纳率:0%
帮助的人:1804
展开全部
rest参数是一个array;
function sum(...rest) {
if(arguments.length === 0){
return 0;
}
let result = 0;
for(let i=0;i<arguments.length;i++){
result += arguments[i]
}
return result
}

function sum(...rest) {
if(rest.length === 0){
return 0;
}
let result = 0;
for(let i=0;i<rest.length;i++){
result += rest[i]
}
return result
}
都可以!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式