今天,我想得到一个总和,但是得到了一个错误的数字。
function fun(a,b,c){
var l = arguments.length;
console.log('length'+l);
for(var i=0;i<l;i++){
var sum;
console.log(arguments[i]);
sum= sum+arguments[i];
}
return sum;
}
var p= fun(1,2,3);
console.log(p);
p 是'NaN'
如果把fun(1,2,3)改为fun(1,2,3,4,5),有什么区别吗?
最佳答案
问题是您没有初始化 sum
,因此您第一次添加到 undefined
(undefined+1
给出 NaN
),然后为NaN
。
改变
for(var i=0;i<l;i++){
var sum;
console.log(arguments[i]);
sum= sum+arguments[i];
}
至
var sum = 0;
for(var i=0;i<l;i++){
console.log(arguments[i]);
sum= sum+arguments[i];
}
请注意,var sum
声明为 hoisted到函数的开始。
关于javascript - js如何使用arguments对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520746/