「十分な引数がありません」と呼ばれるこのエラーについて読みました。
これは標準的な言語レベルのエラーではありません。これはAPI レベルのエラーです。つまり、JavaScript は通常、関数に渡される実引数の数が関数の仮引数と一致するかどうかを気にしません。ただし、JavaScript で記述された特定の API は、引数の数を気にする場合があります。
たとえば、Firefox の関数 (Firefox の DOM API の一部) は、少なくとも 2 つの引数を期待するように定義されているaddEventListener
ため、「引数が不足しています」というエラーをスローする可能性があります。addEventListener
arguments
objectを使用して、関数に渡される実際の引数の数をテストできます。
function foo(a, b) {
if(arguments.length < 2) {
throw TypeError("Not enough arguments; two expected");
}
if(arguments.length > 2) {
throw TypeError("Too many arguments; two expected");
}
if(arguments.length > 10) {
throw TypeError("Way too many arguments; did you even read the docs?");
}
}
引数の不一致によってエラーが発生するようにするには、コードで引数の数を検出し、アクティブにエラーをスローする必要があります。このバージョンのは、ブロックに引っかかるfoo
をスローします。TypeError
catch
ただし、エラーは の仮引数の数とは関係がないことに注意してくださいfoo
。として定義することもできましたがfunction foo(a,b,c)
、 をチェックすることで 2 つの引数の要件を強制していましたarguments
。