Should one use for-of or forEach when iterating through an array?
另外,这是一个风格问题还是一个功能性问题?这是一个偏好问题还是一个更好的问题?我想知道的目的。
通常我用,
1 2 3 4 5 | let iterable = [10, 20, 30]; iterable.forEach((val) => { console.log(val); }) |
但是我看到这个新的语法是可用的。
1 2 3 4 5 | let iterable = [10, 20, 30]; for (let value of iterable) { console.log(value); } |
你能提供一个最佳使用案例的例子吗?当你应该使用它的时候,它可能会亮起?
这是一个非常有趣的问题,已经在许多其他网站上讨论过。我会把我所读到的基本内容贴出来。
ForEach exclusively belong to the royal family of Arrays. The forEach method was introduced with lineage to the prototypal inheritance of Array object! Needless to say, the forEach clause works only with those data structure which are Arrays. The method basically iterates over the elements of the array and executes a callback function [basically some executable function/ fun activity].
The for-of loop is adequately new to the JS world and packs in super-powers! Voilaaaaaaa! The for-of loop creates a loop iterating over iterable member objects. The list is an extensive one such as
- 数组
- 地图
- 集合
- 弦
- 达达雷
- 其他W3C类
You need to know that this bad-ass boy emerged with the birth of ES6 in 2015. So, it offers plenty of flexibility in usage
性能
在性能上,
W3C规范中还有其他几个可ITerable类,如filelist,如我前面提到的。在最近的W3C草案中(大约在ES6发布的时候),像htmlcollection和nodelist这样的集合现在也实现了foreach(),不再只是数组了。作者:@patrick roberts
源链接:
- https://codeburst.io/foreach-vs-for-of-vs-for-in-tug-of-for-d8f935396648
- https://www.reddit.com/r/javascript/comments/4spd5b/forof_vs_foreach/
我建议在ES6中始终使用
- 它适用于任何不可靠的
- 它支持循环体中的各种控制流,如
continue 、break 、return 、yield 、await 。
我个人也觉得它更易读,但这取决于偏好。有些人认为
性能不是问题,在现代发动机中,所有的回路样式都是等效的。