为何使用Array.forEach()方法无法实现数组元素乘2并输出?
问题原因解析:forEach 写法失效的核心原因
forEach 方法的本质是遍历执行,而非返回新数组:
forEach 的设计目的是遍历数组的每个元素,对其执行你传入的回调函数(这里就是timesTwo),但它不会收集回调函数的返回值,也永远返回 undefined。你把numbers.forEach(timesTwo)的结果赋值给numbersForEach,自然得到的就是 undefined,这就是控制台输出不符合预期的直接原因。你的回调返回值被忽略了:
虽然timesTwo函数里写了return value * 2,但这个返回值不会被 forEach 处理或保存,forEach 只会执行这个函数,然后继续遍历下一个元素,完全不会关心函数的返回结果。补充说明函数声明的提升:
你的代码里先调用了timesTwo再定义函数,但这部分没问题——因为 JavaScript 的函数声明会被提升到作用域顶部,所以 forEach 调用时timesTwo是已经存在的,这不是导致问题的原因。
内容的提问来源于stack exchange,提问作者Dana Rutscher
相关产品推荐
相关产品推荐

