JavaScriptの基本-2
参考書籍 : JavaScript本格入門
・制御構文
1, if命令
条件式の真偽で処理を分岐する
var x = 15; if (x >= 20) { console.log('20以上'); } else if (x >= 10) { console.log('10以上'); } else { console.log('10未満'); }
2, switch命令
式の値で処理を分岐する
var rank = 'B'; switch (rank) { case 'A': console.log('A rank'); break; case 'B': console.log('B rank'); break; case 'C': console.log('C rank'); break; default: console.log('no rank'); break; }
switchの式とcaseの値は===で比較されるため、switch('0')はcase 0:の処理を行わない。
3, while/do...while命令
条件式が真である間、ループする。
var x = 8; while (x < 10) { console.log('xの値は' + x); x++; } var x = 8 do { console.log('xの値は' + x); x++; } while (x < 10)
do...while命令では真偽に関わらず1度は処理が実行される。
4, for命令
指定された回数だけ処理を繰り返す。
for (var i = 0; i < 5; i++) { console.log('iの値は' + i); }
for(;;)のように式を省略できる。
省略した場合の条件式は常に真となり、forから抜ける手段がなければ無限ループになる。
5, for...in命令
連想配列(オブジェクト)のキーを変数に取り出して、連想配列の要素を順に処理する。
var data = { apple: 150, orange: 100, banana: 120 }; for (var key in data) { console.log(key + ' = ' + data[key]); }
for...in命令は配列には用いない。
得られるキーはインデックスであり、for...inを用いる必要がなく、またfor...inでは処理の順序が保証されない。
6, for...of命令
配列などを順番に処理する。ES2015で追加された。
var data = ['apple', 'orange', 'banana']; for (var value of data) { console.log(value); }
仮変数に値が渡される点で、for...inと異なる。
7, break命令/continue命令/ラベル構文
breakでループから抜け出せる。
continueは、現在のループだけをスキップして次のループを実行する。
ラベル構文を使えば、ネストされたループを抜け出せる。例えば、積が30を超えたとき九九のループを抜ける場合は、
kuku: for (var i = 1; i < 10; i++) { for (var j = 1; j < 10; j++) { var k = i * j; if (k > 30) break kuku; document.write(k + ' '); } document.write('<br />'); }
のように、脱出先のループの先頭にラベルを指定する。
8, try...catch...finally命令/throw命令
例外を処理する。
try内に例外が発生する可能性のある処理を書き、catchで例外を受け取ったときの処理を、
finallyに例外の有無に関わらず、最終的に実行される処理を書く。
try { undefinedVar * 100; } catch (e) { console.log(e.message); // undefinedVar is not defined } finally { console.log('例外処理は終了しました'); }
throw命令で例外を発生させることができる。
throw new Error('message');
9, Strictモード
スクリプトの先頭に'use strict';と記述することで、JavaScriptの非推薦な構文をエラーにすることができる。