【JavaScript】 continue; と break; の違いに悩む

EngineeringJavaScript, 備忘録

とある練習問題。下記コードでどのように表示されるか?


var array = new Array('りんご', '大根', 'バナナ', 'うさちゃん', 'くまくん');
var i = 0;
do {
        i++;
        if( array[i] == '大根' ) {
                continue;
        }
        if( array[i] == 'うさちゃん' ) {
                break;
        }
        document.write(array[i]);
}while( array[i] != 'くまくん' );

答えはバナナ。++iの単項演算子は1を足しなさいということだから、つまりarray[1]の大根からループし始めるのはわかるが、ifが二つあるのだが、continue;の次どこに向かうんだろう? 次のifか? それともdocument.writeなのか? それともdoなのか?

で、以下を試した。


var array = new Array('りんご','大根','バナナ','うさちゃん','くまくん');
var i = 0;
do {
        i++;
        console.log(i);
        if( array[i] == '大根' ) {
                console.log('b' + i);
                continue;
                console.log('c' + i);
        }
        if( array[i] == 'うさちゃん' ) {
                console.log('d' + i);
                break;
        }
        document.write(array[i]);
}while( array[i] != 'くまくん' );
console.log('e' + i);

そしたら、

continueとbreak
というように表示された。

continueの次にdoに戻っている。document.writeの次にもconsole.logを入れればわかりやすかったな、これは。 2から3への経過で、i=2、つまりarray[2]のバナナをwriteして、3回目のdoへ走っている。

d3のところでうさちゃんhitでループはbreak。while(array[i]!=’くまくん’)の判定式は使わず、という流れ。

 

 

 

JavaScript_1

JavaScript公式サイトでかっクニン。

break 文と対照的に、continue はループの実行を完全には終了しません。代わりに、

while ループでは、条件式にジャンプします。
for ループでは、更新式までジャンプします。

なるほろ。

 

 

HTML5プロフェッショナル認定試験レベル2の勉強中で、これはほとんどJavaScriptの出題だが、問題回答の数をこなす、だね。

 

 

(↓使用中。練習問題はしょぼいので合格できない。サンプル問題繰り返すだね〜。)

 

 


EngineeringJavaScript, 備忘録

Posted by Qawai