关于 Javascript 中 forEach 方法的范围
about the scope of forEach method in Javascript
我是初学者,正在尝试学习 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
由于您在 .forEach() 循环外声明了变量 sum,因此每次交互都会增加循环外的 sum 变量。所以当你 console.log() 它会打印 110.
如果您在 .forEach() 中使用 let sum = 0
重新声明(参见下面的示例)同一个变量,它将在每次交互时重置,并且在循环完成后它将再次打印“0”,因为另一个实例该变量在循环内使用。
let arrayOfNumbers = [1, 5 ,9, 16, 34, 45]
let sum = 0;
arrayOfNumbers.forEach(function(item) {
let sum = 0;
sum = sum + item;
console.log(sum)
})
console.log(sum) //prints 110
您没有在for each 循环中定义sum。您已经在循环范围之上实例化了它。
由于循环在循环中定义的 sum 的范围内能够改变 sum,所以这个现在改变的 sum 就是你最后记录的内容。如果您在循环内定义了 sum,则它不会在循环范围之外定义,并且在尝试打印它时会出现错误。
我是初学者,正在尝试学习 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
由于您在 .forEach() 循环外声明了变量 sum,因此每次交互都会增加循环外的 sum 变量。所以当你 console.log() 它会打印 110.
如果您在 .forEach() 中使用 let sum = 0
重新声明(参见下面的示例)同一个变量,它将在每次交互时重置,并且在循环完成后它将再次打印“0”,因为另一个实例该变量在循环内使用。
let arrayOfNumbers = [1, 5 ,9, 16, 34, 45]
let sum = 0;
arrayOfNumbers.forEach(function(item) {
let sum = 0;
sum = sum + item;
console.log(sum)
})
console.log(sum) //prints 110
您没有在for each 循环中定义sum。您已经在循环范围之上实例化了它。
由于循环在循环中定义的 sum 的范围内能够改变 sum,所以这个现在改变的 sum 就是你最后记录的内容。如果您在循环内定义了 sum,则它不会在循环范围之外定义,并且在尝试打印它时会出现错误。