Array.forEach() 中声明的匿名函数不能在 JavaScript 中 return 值吗?请参阅下面的代码以获得更好的图片

Can the anonymous functions declared inside of Array.forEach() cannot return values in JavaScript? See code below for getting a better picture

我是开发世界的新手,请帮我解决这个小疑惑! 在 arrayName.map(anonymous Function 1) 和 arrayName.forEach(anonymous Function 2) 中,匿名函数 1 returns 值但匿名函数 2 不能 return 值.看 例如下面的代码 !

import React from "react"
import ReactDOM from "react-dom";

var numbers = [3, 56, 2, 48, 5];
console.log(numbers.map(function(number){
  return number*number
}))

console.log(numbers.forEach(function(number){
  return number*number
}))

在上面的代码中,.map() returns 的值我们可以在日志中看到输出,但与 .forEach() 不同的是,我们得到的唯一输出是“未定义”。我们可以实现以上使用以下方法

const numberSquare=[];
numbers.forEach(function(number){
  numberSquare.push(number*number)
})
console.log(numberSquare);

所以在foreach()里面声明的匿名函数是不是不能return值?

javascript 中的 forEach 函数一般不会 return 值。它只是像 for 循环一样用作迭代器函数。如果您需要值,则必须使用例如 map、filter、find、findIndex 或 reduce 或像在第二个示例中那样使用它。

来自 mdn 文档 forEach() 方法为每个数组元素执行一次提供的函数。

一般来说,它只是对数组项的循环

const array1 = ['a', 'b', 'c'];

array1.forEach(element => console.log(element));

// expected output: "a"
// expected output: "b"
// expected output: "c"

map() 方法创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。

const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]

因为你是开发新手,你可以看看关于 forEach 和 map 的 MDN 文档。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

这些是完全不同的功能。

如您所见,forEach return未定义,所以这就是您看到的记录内容。 Map 创建一个新数组,其中包含回调中 returned 的任何内容,这就是您在控制台中看到的内容。 您在匿名函数示例中的 return 不是由外部 console.log 中的 forEach 编辑的 return。您使用平方数和 forEach 创建数组的第二个示例是正确的。但是,对于您想要的,我总是会使用地图,因为它完全可以满足您的需求。

如果你只想用 forEach console.log 平方数,你可以这样做:

numbers.forEach(function(number) { console.log(number * number); });

但这不会创建数组,只会记录它们。 保重!

完全同意,感谢大家解惑! 同样在下面,我得到了一个有趣的博客,旨在指出“forEach()”和“map()”方法之间的区别。读一读 https://www.freecodecamp.org/news/4-main-differences-between-foreach-and-map/