JavaScriptの関数の引数には様々な特徴があります。こうした特徴をきちんと把握しておくことも重要です。
まず、JavaScriptでは関数に渡す引数の数はチェックされません。したがって、リスト13のようなコードもエラーにはなりません。
引数の数が足りない場合には、値が渡されなかった引数はundefinedになります。(1)ではheightがundefinedになるため、正常な計算ができなかったことを示す「NaN」という値になります。引数の数が多すぎる場合には余分な引数は無視されるため、(3)の呼び出しは正常な呼び出しである(2)と同じ結果になります。
余分な引数は捨てられるわけではありません。JavaScriptでは、引数の数にかかわらず「関数に渡されたすべての引数のリスト」が保持されます。このため、余分な引数を後から参照することも可能です。
この引数リストを管理するのがargumentsというオブジェクトです。argumentsは、関数の呼び出しとともに生成され、関数の中からだけ参照できる特別なオブジェクトです。リスト13の例では、表2のような値を保持しています。

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