我正在阅读airbnb JavaScript指南,其中有一个特别的声明:
不要使用迭代器。 与for-in或for-of等循环相比,更喜欢JavaScript的高阶函数。
他们对上述声明的原因是:
这强制执行了我们的不可变规则。 处理返回值的纯函数比处理副作用更容易理解。
我无法区分给出的两种编码实践:
const numbers = [1, 2, 3, 4, 5];
// bad
let sum = 0;
for (let num of numbers) {
sum += num;
}
sum === 15;
// good
let sum = 0;
numbers.forEach((num) => {
sum += num;
});
sum === 15;
为什么应该优先选择forEach
而不是普通的for
循环?它真正会有什么区别吗?使用普通的iterators
是否会有任何副作用?