JavaScriptの関数の引数には様々な特徴があります。こうした特徴をきちんと把握しておくことも重要です。

 まず、JavaScriptでは関数に渡す引数の数はチェックされません。したがって、リスト13のようなコードもエラーにはなりません。

リスト13●リスト1のcalculateBmi関数に異なる個数の引数を渡した例
[画像のクリックで拡大表示]

 引数の数が足りない場合には、値が渡されなかった引数はundefinedになります。(1)ではheightがundefinedになるため、正常な計算ができなかったことを示す「NaN」という値になります。引数の数が多すぎる場合には余分な引数は無視されるため、(3)の呼び出しは正常な呼び出しである(2)と同じ結果になります。

 余分な引数は捨てられるわけではありません。JavaScriptでは、引数の数にかかわらず「関数に渡されたすべての引数のリスト」が保持されます。このため、余分な引数を後から参照することも可能です。

 この引数リストを管理するのがargumentsというオブジェクトです。argumentsは、関数の呼び出しとともに生成され、関数の中からだけ参照できる特別なオブジェクトです。リスト13の例では、表2のような値を保持しています。

表2●リスト13で生成されるargumentsオブジェクトの内容

 argumentsオブジェクトを利用することで、実際の処理の前に引数の個数をチェックすることもできます(リスト14)。argumentsオブジェクトのlengthプロパティは、関数に渡された引数の個数を表します。ここでは、lengthプロパティが2でない場合に例外を投げています。

リスト14●引数の個数をチェックするコード

この先は会員の登録が必要です。有料会員(月額プラン)は登録月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら