javascript - js如何使用arguments对象

标签 javascript

今天,我想得到一个总和,但是得到了一个错误的数字。

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/

相关文章:

javascript - JS正则表达式查找被双引号包围的子串

数组内的 JavaScript 数组

javascript - Ruby Rails - 可选表单输入以复选框为条件显示

javascript - 维护第三方代码的自定义补丁

javascript - 当我单击 HTML 中的 anchor 链接时,有什么方法可以打开全屏打开的 ppt 文件?

javascript - 将两个排序数组合并为一个

javascript - 使用 $regex 查询 Mongoose 不返回任何结果

iframe 源之间的 Javascript 按钮切换

javascript - jQuery iFrame 操作

javascript - MDN JavaScript 继承重温 - 理解示例