JavaScript: 関数の引数をチェックする
関数の引数をチェックする方法について記述します。
まずは、引数のデフォルト値を設定する方法、 次に引数が指定されなかった場合に例外を返す方法について説明します。
引数のデフォルト値を設定する方法
まずは引数が指定されていない場合に、デフォルト値を設定する方法です。
引数が指定されていない場合、引数用の変数は「undefined」となります。 ですから、引数の値が「undefined」かどうかを判定してからデフォルト値を代入します。 コードは次のようになります。
サンプルコード
console.log(f(2,3)); // 6 引数あり
console.log(f()); // 1 引数なし
function f(x, y){
if (x === undefined) {x = 1;}
if (y === undefined) {y = 1;}
return x * y;
}
赤字部分がデフォルト値を設定している部分です。
このサンプルコードではデフォルト値を「1」にしているので、 「console.log(f())」のように引数なしで呼ばれた場合は、デフォルト値が採用されて、 結果は「1 * 1」が返ってきます。
引数が指定されていない場合に例外を返す方法
次は、引数が指定されていない場合に、例外を返す方法を説明します。
引数が必ず指定されていないと、処理が出来ないような関数の場合は 例外を返す必要があります。
その場合は引数が「undefined」かどうかをチェックして、 「undefined」ならthrow 文で例外を返します。
throw 文には name や message を付けておくと、どういう例外が発生したのかが わかりやすくなります。コードは次のようになります。
function f(x, y){
if (x === undefined){
throw {name: 'Argument Error', message: '引数 x が指定されていません'};
}
if (y === undefined){
throw {name: 'Argument Error', message: '引数 y が指定されていません'};
}
return x * y;
}
try{
console.log(f());
}catch(e){
console.log(e.name + ' : ' + e.message);
}
// 実行結果 Argument Error : 引数 x が指定されていません
try{
console.log(f(2));
}catch(e){
console.log(e.name + ' : ' + e.message);
}
// 実行結果 Argument Error : 引数 y が指定されていません
赤字部分の throw 文で例外を返しています。
thorow 文を返す場合は、ただ返すだけではなく、最低でも message は記述しておいた方が、 親切なプログラムになります。