之前对 forEach 的理解就是 for 循环的另一种写法,直到遇到问题才发现自己的理解有问题。
先看一下 MDN 上对 forEach 的介绍:
forEach() 方法对数组的每个元素执行一次提供的函数。
然后 MDN 还给出了一段示例代码:
|
到这里都没有什么问题,接下来我写一个例子:
|
return 无效,再换个方式:
|
仍然无效,再来看一下 MDN 的文档:
|
介绍:
forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数
文档中还写到 callback 函数的返回值为 undefined,到这里原因已经呼之欲出了,因为函数传递参数时基本数据类型按值传递,所修改值并不会影响到数组本身,而且 callback 函数的返回值也与数组本身无关。
解决办法有两种:
1.获取到数组的引用
|
2.返回新的数组
|
参考:
- Array.prototype.forEach()
- is it possible to change values of the array when doing foreach in javascript?
文档信息
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
本文链接:www.snovey.com/2017/09/javascrpt-foreach.html