LoginSignup
0
2

More than 5 years have passed since last update.

javascript iteratorのnext呼び出しタイミング

Posted at

ちょっと調べたのでメモ。
スプレッド関数とか配列に変換する場合、最初に一気に呼ばれる。for(x of iterator)の場合は逐次呼ばれる。

Iteration protocols - JavaScript | MDN

以下をchromeのconsoleで実行する。

itr = {
  [Symbol.iterator]: () => ({
    i: 1,
    next: function(){
      console.log(this.i)
      return { value: this.i, done: this.i++ > 10 }
    }
  })
}

Array.from(itr).forEach(i => console.log('for-each')) // 1
for(j of itr){console.log('for')} // 2

1の場合、最初に数字がバッと出て後でfor-eachとまとめて出る。
2の場合、数字とforが交合に出る。
1の方が今風って感じですが、2の方が安全。中間操作とかないし。当たり前のことを確認してしまった感もあります。

まぁこれでStreamみたいな事ができるかも。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2