31565


[mdnに掲載されている無限イテレーター](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Generator)の処理の流れが分からないので、挙動を確かめようと思い、`while`
の直後に `console.log();`を挿入したら、繰り返し中に実行されていたはずの `yield` まで処理が到らず、単純な無限ループに陥りました。

[code]

    function* idMaker(){
      var index = 0;
      while(true)
        console.log(index); //挿入してみた
        yield index++;
    }
    
    var gen = idMaker();
    
    gen.next().value);
    
[/code]

なぜですか？


CC BY-SA 3.0
2017-01-02T03:16:11.810
31564
2017-01-02T07:55:54.007
2017-01-02T07:55:54.007
3054
7886
question
javascript
while の下に一行足したら、それ以降の部分が繰り返し中に実行されなくなった


無限イテレーターは関係ありません。構文の問題です。

[code]

    // before
    while(true)
        yield index++;
    
    // after
    while(true)
        console.log(index); //挿入してみた
        yield index++;
    
[/code]

は

[code]

    // before
    while(true) {
        yield index++;
    }
    
    // after
    while(true) {
        console.log(index); //挿入してみた
    }
    yield index++;
    
[/code]

と解釈されます。


CC BY-SA 3.0
2017-01-02T03:21:18.160
31565
2017-01-02T03:21:18.160
4236
31564
answer