Прекращает ли использование глобально объявленной переменной в одной функции ее использование в другой? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь понять, почему одна версия моего кода работает, а другая - нет. Я определил номера переменных глобально, поэтому я подумал, что если я запустил функцию sumArray (), то она будет передавать элементы, но всегда возвращала 0. И только когда я ОПРЕДЕЛЯЛ ее СНОВА ближе к функции sumArray (), она вычисляла правильно.

Запрещает ли использование номеров переменных для функции printReverse () ее повторное использование в sumArray ()? Если вы закомментируете var numbers = [2, 2, 3];, вы увидите, что в консоли он возвращает 0.

var numbers = [1, 2, 3];
var result = 0;

function printReverse() {
  var reversed = [];

  while (numbers.length) {
    //push the element that's removed/popped from the array into the reversed variable
    reversed.push(numbers.pop());
  }
  //stop the function 
  return reversed;
}
//print the results of the function printReverse()
console.log(printReverse());

var numbers = [2, 2, 3];

function sumArray() {
  //pass each element from the array into the function
  numbers.forEach(function(value) {
    //calculate the sum of var result + the value passed through and store the sum in var result
    result += value;
  });

  //return and print the sum
  return result;
}

//print the results of the function sumArray()
console.log(sumArray());

1 Ответ

0 голосов
/ 07 мая 2020

(Когда вы закомментировали var numbers = [2,2,3])

Метод pop изменяет исходный массив, поэтому у вас не останется никаких элементов, когда вы достигнете функции sumArray.

Вместо этого вы можете использовать обратный метод

numbers.reverse(); //this can completely replace the printReverse function
...