制御フロー
JavaScriptでプログラミングを行う際の条件による処理の分岐など制御フローに関する説明です。
if, else
if
は指定された条件がtrueの場合に文を実行します。
let a = 0;
if(a === 0){
console.log('a is zero');
}
else
を使うとif
の条件部がfalseの場合に実行される文を指定できます。
let a = 1;
if(a === 0){
console.log('a is zero');
}else{
console.log('a is not zero');
}
else if
で条件部を複数指定することが可能です。
let a = 1;
if(a === 0){
console.log('a is zero');
}else if(a === 1){
console.log('a is one');
}else{
console.log('a is not zero , one');
}
条件式の値は以下がfalseとして判定され、それ以外がtrueと判定されます。
- false
- undefined
- null
- 0
- NaN
- ’’ - 空の文字列
switch
式の値によって処理を複数に分岐する場合は、switch文が使えます。
default
はcase節で一致する対象がない場合に実行されます。
break
せずに、case節をつなげると複数の分岐で同じ処理を行う事ができます。
const str = 'two';
switch (str) {
case 'one':
console.log('string is one');
break;
case 'two':
case 'three':
console.log('string is two or three');
break;
default:
console.log('string is not one , two ,three');
}
try catch finaly
例外の処理はtry-catch-finaly文で行えます。
try内で例外が発生すると、catchの文が呼ばれ、最後にfinallyの文が呼び出されます。 catchとfinalyはどちらか一方だけを指定することも可能です。
例外に対して処理は行わないけれども、必ず行いたい処理がある場合は try-finallyの形で使う事になります。
try {
let a = null;
a.toString();
let b = c;
} catch (e) {
if (e instanceof TypeError) {
console.log(`TypeError Catch! ${e}`);
} else if (e instanceof ReferenceError ) {
console.log(`ReferenceError Catch! ${e}`);
} else {
console.log(e);
}
} finally {
console.log('finally');
}
throw
throw
文を使うとユーザー定義の例外を発生させる事ができます。
let f = function (n){
if(!Number.isFinite(n)){
throw 'n is not a number';
}
return n * n ;
};
try {
f('123');
} catch (e) {
console.log(e);
}