【发布时间】:2020-09-30 18:48:15
【问题描述】:
我是一名尝试学习 javascript 编码的初学者。很抱歉提出这样的基本问题,但我已经阅读了很多资源,但我仍然很难理解以下关于 forEach() 方法(可能还有其他方法?)范围的行为。
考虑一个数字数组。我想计算数组中数字的总和。
所以我声明并初始化了一个名为 sum 的变量。
然后我使用 forEach() 方法计算项目的总和,并将结果放入 sum 变量中
然后我 console.log(sum).
我不明白为什么console.log 可以访问forEach() 函数中的sum 变量?我认为它会打印 0,因为 console.log 超出了 forEach() 方法的本地范围。我知道变量 sum 具有全局范围,但是 forEach() 内部的计算不会具有局部范围吗?
感谢您的帮助。
let arrayOfNumbers = [1, 5 ,9, 16, 34, 45]
let sum = 0;
arrayOfNumbers.forEach(function(item) {
sum = sum + item;
})
console.log(sum) //prints 110
【问题讨论】:
-
没关系,如果您将数组 sum 声明为全局外部,则可以全局访问它,并且您可以在中途在任何函数内添加值后这样做...您只是为其添加了值,你没有改变变量的范围。如果你在函数内部再次声明
let sum = sum + item;,你将无法在函数外部访问它。 -
好的,我现在明白了。在函数内部重用变量不会改变它的作用域,所以它仍然可以从外部访问。非常感谢
标签: javascript function methods foreach scope