Почему мой код выдает ошибку «Превышен максимальный размер стека вызовов»? - PullRequest
0 голосов
/ 06 мая 2018

Недавно я написал простую программу для целей обучения, которая (на данный момент) в основном просто складывает все числа вместе. Но по какой-то причине, когда я пытаюсь вызвать его (программа является функцией), он выдает ошибку «превышен максимальный размер стека вызовов». Есть ли способ это исправить? Ответ может быть очень очевидным, но я очень новичок в этом деле. Вот код:

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 голосов
/ 06 мая 2018

Я полагаю, что вы узнаете о аргументах .

Поскольку выполнение add.length не имеет никакого смысла вообще.

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);

Вы можете написать это так

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));

Функции должны принимать аргументы, обрабатывать и затем возвращать результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...