2016-07-19 3 views
0

私は発電機をリアしようとしていますが、それに入る前に、私は、これはイテレータオブジェクトはどのようにJavaScriptの位置を追跡しますか?

function makeIterator(array){ 
    var nextIndex = 0;  
    return { 
     next: function(){ 
      return nextIndex++ 
     } 
    } 
} 
var it = makeIterator([1,2,3,4]); 

なぜそれがit.next()リターン1と別のit.next()戻り2ことでどのように動作するか/理由を知りたいです。それはどのように知っていますか?

舞台裏での動作を確認する方法はありますか?

+0

最初に 'it.next()'を呼び出すと、0ではなく1になり、渡された配列の内容とは無関係であることに注意してください。 –

+1

これはクロージャーに関連しています。この投稿を読んで、それは大丈夫です:http://stackoverflow.com/questions/111102/how-do-javascript-closures-workそれは私がjavascriptを永遠に見る方法を変更しました。 – Dellirium

答えて

0

イテレータは状態のオブジェクトです。あなたのケースでは、状態はクロージャ変数private nextIndexです。それが追跡方法です。

ここでは舞台裏で魔法はありません。その変数がなければ、エラーが発生します。

関連する問題