Iterators and Generators

  • 11.1 不要使用 iterators。使用高阶函数例如 map()reduce() 替代 for-of

    为什么?这加强了我们不变的规则。处理纯函数的回调值更易读,这比它带来的副作用更重要。

    1. const numbers = [1, 2, 3, 4, 5];
    2. // bad
    3. let sum = 0;
    4. for (let num of numbers) {
    5. sum += num;
    6. }
    7. sum === 15;
    8. // good
    9. let sum = 0;
    10. numbers.forEach((num) => sum += num);
    11. sum === 15;
    12. // best (use the functional force)
    13. const sum = numbers.reduce((total, num) => total + num, 0);
    14. sum === 15;
  • 11.2 现在还不要使用 generators。

    为什么?因为它们现在还没法很好地编译到 ES5。 (译者注:目前(2016/03) Chrome 和 Node.js 的稳定版本都已支持 generators)