随着ECMAScript 2015(ES6)中引入的for..of,是否有任何理由继续提倡稍微使用旧版本Array.prototype.forEach()?
今天在ES6中编写的许多代码包含如下代码:
let sum = 0;
values.forEach((value) => {
sum += value;
});
Run Code Online (Sandbox Code Playgroud)
在几乎所有这些情况下,可以使用等效的for循环:
let sum = 0;
for (let value of values) {
sum += value;
}
Run Code Online (Sandbox Code Playgroud)
两种格式的更简洁版本:
values.forEach(value => sum += value);
for (let value of values) sum += value;
Run Code Online (Sandbox Code Playgroud)
for..of格式不仅适用于Array对象,也适用于其他迭代,并且性能更高.不同于Array.prototype.map()没有返回值,.forEach()这将允许进一步链接.
可以想象它可以更具可读性,因此在调用链的末尾(下面的示例)中有用,或者如果每个项应该应用于未知的回调.抛开那些边缘情况,是否应该避免?
['1', '2', 3].map(Number)
.forEach(value => sum += value)
Run Code Online (Sandbox Code Playgroud)