我想知道为什么我的代码一个版本能用,而另一个版本不能用。我已经全局定义了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());
(当你注释了 var numbers = [2,2,3]
)
该 pop
方法修改了原来的数组,因此当你到达sumArray函数时,你没有剩余的元素。
相反,你可以使用 反面 办法
numbers.reverse(); //this can completely replace the printReverse function