viajavascript 引数オブジェクトは主に javascript 関数のセクションで学習します。
3: 引数オブジェクト
実際、関数本体は引数オブジェクトを通じて渡されたパラメータを受け取ることができます。
function box(){ return arguments[0] + '|'+arguments[1]; //得到每次参数的值 } alert(box('caibaojian',24));
arguments オブジェクトの length 属性でパラメータの数を取得できます。
function box(){ return arguments.length; } alert(box(1,2,3,4,5)); 5
今日は主に、使用プロセスにおけるいくつかの注意事項について、例を通して、引数オブジェクトが関数のパラメータにアクセスする場合と、行パラメータがパラメータを定義する場合の違いを説明します。リンク: http://caibaojian.com/js-arguments.html
via はパラメーターの数を検出します: http://caibaojian.com/js-arguments.html
関数のパラメータの数を検出するための argument オブジェクト、arguments.length 属性を参照するだけです。
次のコードは、各関数呼び出しで使用されるパラメーターの数を出力します:
//code from http://caibaojian.com/js-arguments.html function func(a,b){ b=30; arguments[0] = arguments[1] return a; } function(1,2); 30 function(1); undefined //由于函数内arguments形参改变了,a=arguments[1],arguments[1]未定义,所以a最后输出undefined
via 上記のコードは、「2」、「0」、「1」を順番に表示します。
注: 他のプログラミング言語とは異なり、ECMAScript は関数に渡されたパラメーターの数が関数で定義されたパラメーターの数と等しいかどうかを検証しません。開発者定義の関数は、エラーを発生させることなく、任意の数の引数 (Netscape のドキュメントによると最大 255 個) を受け入れることができます。不足している引数は未定義として関数に渡され、余分な関数は無視されます。
関数のオーバーロードをシミュレートする
引数オブジェクトを使用して、関数に渡されるパラメータの数を決定し、関数のオーバーロードをシミュレートします:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
via パラメータが 1 つだけの場合、doAdd() 関数はパラメータに 5 を追加します。パラメータが 2 つある場合は、2 つのパラメータが加算され、その合計が返されます。したがって、doAdd(10) は「15」を出力し、doAdd(40, 20) は「60」を出力します。原文の引用元: http://caibaojian.com/js-arguments.html
オーバーロードほどではありませんが、ECMAScript のこの制限を回避するには十分です。