ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 引数オブジェクト アプリケーションの例_JavaScript スキル

JavaScript 引数オブジェクト アプリケーションの例_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 16:36:29994ブラウズ

引数オブジェクト

関数コードでは、特別なオブジェクト引数を使用することで、開発者は明示的に名前を付けずにパラメータ名にアクセスできます。

たとえば、関数sayHi()では、最初のパラメータはmessageです。この値は、最初の引数の値である argument[0] を使用してアクセスすることもできます (最初の引数は位置 0、2 番目の引数は位置 1 など)。

したがって、パラメータに明示的に名前を付けなくても関数を書き直すことができます。

function sayHi() {
if (arguments[0] == "bye") {
return;
}

alert(arguments[0]);
}

検出パラメータの数

arguments オブジェクトを使用して関数のパラメータの数を検出することもできます。プロパティ argument.length を参照するだけです。

次のコードは、各関数呼び出しで使用されるパラメーターの数を出力します。

function howManyArgs() {
alert(arguments.length);
}

howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

上記のコードは「2」「0」「1」を順番に表示します。

注: 他のプログラミング言語とは異なり、ECMAScript は関数に渡されるパラメーターの数が関数で定義されたパラメーターの数と等しいかどうかを検証しません。開発者定義の関数は、エラーを発生させることなく、任意の数の引数 (Netscape のドキュメントによると最大 255 個) を受け入れることができます。不足している引数は未定義として関数に渡され、余分な関数は無視されます。
関数のオーバーロードをシミュレートします

引数オブジェクトを使用して、関数に渡されるパラメーターの数を決定し、関数のオーバーロードをシミュレートします。

function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}

doAdd(10); //「15」を出力します
doAdd(40, 20) //「60」を出力します

パラメータが 1 つだけの場合、doAdd() 関数はパラメータに 5 を加えます。パラメータが 2 つある場合は、2 つのパラメータが加算され、その合計が返されます。したがって、doAdd(10) は「15」を出力し、doAdd(40, 20) は「60」を出力します。

オーバーロードほど良くはありませんが、ECMAScript のこの制限を回避するには十分です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。