为什么我的代码会出现“超出最大调用堆栈大小”错误?

时间:2018-05-06 00:34:40

标签: javascript function

我最近写了一个简单的程序用于学习目的(现在)基本上只是将所有数字加在一起。但是,出于某种原因,当我尝试调用它(程序是一个函数)时,它会输出“超出最大调用堆栈大小”错误。有什么办法可以解决吗?答案可能非常明显,但我在这方面非常初学。这是代码:

var add = function(num1, num2, num3, num4, num5) {
    for(i = 0; i < add.length; i++) {
if(i === 0) {
var first = add(i);
} else if(i === 1) {
var second = add(i);
} else if(i === 2) {
var third = add(i);
} else if(i === 3) {
var fourth = add(i);
} else if(i === 4) {
var fifth = add(i);
console.log(first + second + third + fourth + fifth);
};
    };
};

add(1, 2, 3, 4, 5);

1 个答案:

答案 0 :(得分:1)

我相信您正在了解arguments

因为做add.length根本没有任何意义。

&#13;
&#13;
var add = function(num1, num2, num3, num4, num5) {
  for (i = 0; i < arguments.length; i++) {
    if (i === 0) {
      var first = arguments[i];
    } else if (i === 1) {
      var second = arguments[i];
    } else if (i === 2) {
      var third = arguments[i];
    } else if (i === 3) {
      var fourth = arguments[i];
    } else if (i === 4) {
      var fifth = arguments[i];
    }    
  }
  console.log(first + second + third + fourth + fifth);
};

add(1, 2, 3, 4, 5);
&#13;
&#13;
&#13;

你可以像这样写

&#13;
&#13;
var add = function() {
  var sum = 0;
  for (var i = 0; i < arguments.length; i++) {
    sum += arguments[i];    
  }
  return sum;
};

console.log(add(1, 2, 3, 4, 5));
console.log(add(1, 2, 3, 4));
&#13;
&#13;
&#13;

函数应该接受参数,处理然后返回结果。