制御フローの例外
語句 | 内容 |
---|---|
break | ループを途中で抜ける |
continue | ループ内で、実施中の繰り返し処理を終了して、次の繰り返し処理に進む。 |
return | 現在の関数を終了する |
throw | 例外ハンドラでキャッチする必要がある「例外」を示す |
制御フロー
while文
while(条件) 文
以下は無限ループの代表例
while(true){ console.log('永遠は存在する。'); }
if...else文
if(条件) 文1 [else 文2]
do...while文
do 文 while(条件);
文
は少なくとも1回は実行される
for文
for([初期化],[条件],[再設定]) 文
- 実施される順序は「
①初期化
->②条件
->③文
->④再設定
」②条件
の結果がfalse
の場合、ループを抜ける(③へは進まない。)- その他、
break
、return
、throw
でもループを抜ける。
- その他、
,
を使用すると複数条件をまとめてセットすることができる。
以下は無限ループの代表例
for(;;){ console.log('永遠は存在する。'); }
switch文
switch(式){ case 値1: 文1 [break;] case 値2: 文2 [break;] ... default: 文default [break;]
- 実施される順序は「
①:式の評価
->②:①の結果と一致するcaseの値を探す。
->③:ヒットしたcase以下の文を実施
」- ②で一致する値が見つからない場合
default
がある場合はdefault
以下が実行される。default
がない場合は何も実行されない。
switch文
のスコープを抜ける条件は以下break文
、return文
、continue文
、throw文
が実行される。switch文
の一番最後まで到達する。
- ②で一致する値が見つからない場合
case
の末尾にbreak
を記述せずに、次のcase
を記述する制御フローをfall-through
と呼ぶ。
let message = ''; let n = Math.floor(Math.random()*6+1); switch(n){ case 1: case 3: case 5: message = '奇数です'; break; default: message = '偶数です'; break; } console.log(message);
for...inループ
- オブジェクトのプロパティのキーに対して処理を繰り返す
for(変数 in オブジェクト) 文
const profile = { name : 'taro', sex : 'male', age : 25, test: { test1:1, test2:"2", }, sample: { sample1, sample2, } }; for(let prop in profile){ if(!profile.hasOwnProperty(prop))continue; console.log(prop + ':'+profile[prop]); } /* name:taro sex:male age:25 test:[object Object] sample:sample1,sample2 */
for...ofループ
- オブジェクトの各要素に対して処理を繰り返す
for(変数 of オブジェクト) 文
const check = ['name','sex']; const profile = { name : 'taro', sex : 'male', age : 25, }; for(let prop of check){ // check と一致するキーが存在したら、キーごと削除する。 if(profile[prop]){ delete profile[prop]; } } console.log(profile);