anchor.diff:  ```
   - - -
   References
  -- [Iterators and generators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)
  -- [Episode 2 – Understanding JavaScript Generators](http://knowthen.com/episode-2-understanding-javascript-generators/)
  +
  +- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators[Iterators and generators]
  +- http://knowthen.com/episode-2-understanding-javascript-generators/[Episode 2 – Understanding JavaScript Generators]
  
positive.code: console.log(iterableArray.next().value) // 3
  console.log(iterableArray.next().done)  // true
  ```
  一些内置的可迭代的对象有 `String`、`Array`、`TypedArray`、`Map`、`Set`，简单的判断规则就是：可以使用 `for...of` 遍历的对象。这样的对象也可以使用 [扩展运算符（...）](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)、[解构赋值（destructuring assignment）](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) 和 generator，generator 提供了更好的遍历可迭代对象的方法。
  
  ## yield 关键字
  现在我们知道了如何定义 generator 函数以及 generator 函数返回的是迭代器对象。那么就先来试着写一下，注意使用 `node --harmony` 执行：
  
negative.code: 
  ##  迭代器对象
  
  迭代器有一个特别棒的特性，就是可以记录当前数组遍历到的节点位置。除此之外，按照 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols[协议规范]，迭代器对象需要提供一个 `next` 方法继续遍历下一个属性值，该方法返回一个如下对象：
  
  ```js
  {
  