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嘛?谢谢 展开
我的写法如下:
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嘛?谢谢 展开
4个回答
展开全部
代码不全,不知道你的rest参数怎么传的,你可以这样写:
var totalsum=0;
//每次加加时就调用这个方法,最后计算的结果就是totalsum
function sum(rest){
totalsum+=parseInt(rest);
}
var totalsum=0;
//每次加加时就调用这个方法,最后计算的结果就是totalsum
function sum(rest){
totalsum+=parseInt(rest);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给每个文本框取一个id,比如iptid1--iptid10。
这些id的名称都是根据你的文本框递增来变化的,比如你有5个,那你五个文本框的id就分别是iptid1,iptid2,iptid3,iptid4,iptid5。
取总值的时候可以这样
document.getelementbyid("iptid1").value这样就可以取到一个文本框的值了,然后求和即可。
这些id的名称都是根据你的文本框递增来变化的,比如你有5个,那你五个文本框的id就分别是iptid1,iptid2,iptid3,iptid4,iptid5。
取总值的时候可以这样
document.getelementbyid("iptid1").value这样就可以取到一个文本框的值了,然后求和即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在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]即可。关于++、--等这些运算参考这篇文章
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
}
都可以!
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
}
都可以!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询