7.4.6 IteratorClose ( iterator, completion )
抽象操作 IteratorClose 拥有参数 iterator 和 completion ,用于通知迭代器它应该执行它通常在其达到完成状态时执行的任何操作:
- 断言:Type(iterator) 为 Object 类型。
- 断言: completion 是一个 Completion Record。
- 使 return 变为 ? GetMethod(iterator, "return")。
- 如果return 为undefined,则返回 Completion(completion)。
- 使 innerResult 变为 Call(return, iterator, « »)。
- 如果 completion.[[Type]] 是一个 throw,则返回 Completion(completion)。
- 如果 innerResult.[[Type]] 是一个 throw,则返回 Completion(innerResult)。
- 如果 Type(innerResult.[[Value]]) 不是 Object 类型,则抛出一个 TypeError 错误。
- 返回 Completion(completion)。