在一个函数中使用全局声明的变量是否会阻止它在另一个函数中使用?

问题描述 投票:0回答:1

我想知道为什么我的代码一个版本能用,而另一个版本不能用。我已经全局定义了var数字,所以我想如果我运行函数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());
javascript function variables declaration variable-declaration
1个回答
0
投票

(当你注释了 var numbers = [2,2,3])

pop 方法修改了原来的数组,因此当你到达sumArray函数时,你没有剩余的元素。

相反,你可以使用 反面 办法

numbers.reverse(); //this can completely replace the printReverse function
© www.soinside.com 2019 - 2024. All rights reserved.