我是Javascript的新手,我正在尝试编写一个总结数字的函数。 下面的函数返回“0”而不是总和(我不知道为什么)。
function sumTo(N) {
var total = 0
for (var i = 0; i < N.length; i++) {
total = total + N[i];
}
return total;
};
console.log(sumTo(1,2,3,4,5));
答案 0 :(得分:5)
您正试图从一个号码(您传递给您的函数的第一个号码; length
中的1
)获取undefined
。数字没有长度,因此您获得0 < undefined
,而sumTo
为false,因此您的循环永远不会运行。
或者:
将数组传递到console.log(sumTo([1, 2, 3, 4, 5]);
// Note ----------^-------------^
arguments
或
使用for (var i = 0; i < arguments.length ++i) {
total += arguments[i];
}
自动本地变量
// ES2015+ only!
function sumTo(...values) {
let total = 0;
for (let i = 0; i < values.length; ++i) {
total += values[i];
}
return total;
}
或
使用ES2015&#34;休息&#34;参数:
reduce
由于您当时在ES2015中,您可以使用带有箭头功能的reduce
(总和是// ES2015+ only!
function sumTo(...values) {
let total = values.reduce((a, b) => a + b);
return total;
}
的完美用例):
for-of
或// ES2015+ only!
function sumTo(...values) {
let total = 0;
for (let value of total) {
total += value;
}
return total;
}
,另一个ES2015事情:
IF len(to_tx.EMAIL) > 0 then 'Y' ELSE 'N'
答案 1 :(得分:2)
那是因为N
只是第一个参数,在本例中是1
。 1
没有索引,因此N[1]
不起作用。
您需要传递一个数组,因为您希望N
拥有length
。
console.log(sumTo([1, 2, 3, 4, 5]));
答案 2 :(得分:2)
您需要数字数组,或使用arguments object。
function sumTo(N) {
var total = 0
for (var i = 0; i < N.length; i++) {
total = total + N[i];
}
return total;
}
console.log(sumTo([1, 2, 3, 4, 5]));
带参数
function sumTo(N) {
var total = 0
for (var i = 0; i < arguments.length; i++) {
total = total + arguments[i];
}
return total;
}
console.log(sumTo(1, 2, 3, 4, 5));
使用ES6,您可以使用rest parameter ...
。
function sumTo(...N) {
var total = 0
for (var i = 0; i < N.length; i++) {
total = total + N[i];
}
return total;
}
console.log(sumTo(1, 2, 3, 4, 5));
答案 3 :(得分:1)
您也可以使用reduce方法:
var sumTo = ar => ar.reduce((a,b) => a+b);
console.log(sumTo([1, 2, 3, 4, 5])); // 15
答案 4 :(得分:1)
如评论所述,您应该在数组中发送您的值:
function sumTo(N) {
var total = 0
for (var i = 0; i < N.length; i++) {
total = total + N[i];
}
return total;
};
console.log(sumTo([1, 2, 3, 4, 5]));
&#13;
作为替代方案,您可以使用Array.reduce
function sumTo(N) {
return N.reduce(function(p,c){
return p+c
})
};
console.log(sumTo([1, 2, 3, 4, 5]));
&#13;