Почему моя функция работает, когда вызывается сама по себе, а не когда я вызываю ее с другой функцией? (Вопрос по javascript для начинающих) - PullRequest
0 голосов
/ 23 октября 2019

Я работаю над некоторыми проблемами кодирования (я все еще новичок). Мне удалось заставить обе эти функции работать, но когда я пытаюсь вызвать их вместе, моя вторая функция просто возвращает ноль ..

Обе функции принимают два параметра (или больше). Первая функция считает числа между двумя параметрами и возвращает их в виде строки (1, 5) => [1,2,3,4,5], а вторая суммирует их вместе (1,10) => 55. Любойпричина, почему они работают индивидуально, но не вместе?

Заранее спасибо!

`let range = (start, end) => {
    numbers = [];
    for(i = start; i<end+1; i++) {
      if(i>=start){
      numbers.push(i);
        if (i>=end) {
          console.log(numbers);
        }
      }
    }

}

function sum(start, ...add){ 
    let sumCounter = 0; 
      for(i = start; i<=add; i++) {
        sumCounter += i;
    }
    return sumCounter;
} 

console.log(sum(1,10)); //second function works

console.log(sum(range(1, 10))); //first function works, not second function `

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Вот рабочий вариант:

function range(start, end) {
    var numbers = [];
    for (i=start;i<end+1;i++) {
        numbers.push(i)
    } 
    return numbers;
}

console.log("Sum: " + range(5, 10).reduce((a,b) => a + b, 0));

Или это может быть проще для понимания:

function range(start, end) {
    var numbers = [];
    for (i=start;i<end+1;i++) {
      numbers.push(i)
    } 
    return numbers;
}

function sum(nums) {
    var sum = 0;
    for (i=0;i<nums.length;i++) {
        sum += nums[i];
    }
    return sum;
}

console.log("Sum: " + sum(range(5, 10)));
0 голосов
/ 23 октября 2019

Здесь много чего происходит. Сначала убедитесь, что вы возвращаете значение в первой функции, а не просто печатаете на консоль. Во-вторых, когда вы говорите «if (i> = end)», это всегда будет правдой, поэтому в этом нет необходимости. Также вместо того, чтобы сказать «if (I> = end)», вы можете поставить «I == end» или просто поместить следующий код после цикла for. Я бы посоветовал вам вернуть числа и использовать их в качестве параметра для вашей функции суммы. Я надеюсь, что вы сможете следить за всем этим!

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