js 内のすべてのものはオブジェクトであり、関数もオブジェクトです。関数名は実際には関数によって定義されたオブジェクトを参照する変数です。
1. 引数とは何ですか?
この関数本体の引数は非常に特殊で、実際には関数の組み込みの配列のようなオブジェクトであり、配列の [i] と .length を使用できます。
2. 機能は何ですか?
js 構文はオーバーロードをサポートしていません。ただし、引数オブジェクトを使用してオーバーロード効果をシミュレートできます。
arguments オブジェクト: 関数オブジェクト内で、すべてのパラメーター値を受け取るために配列のようなオブジェクトが自動的に作成されます。
arguments[i]: 添え字 i で渡されたパラメータ値を取得します。
arguments.length: 渡されたパラメータの数を取得します。
オーバーロード:
同じ関数名と異なるパラメータリストを持つ複数の関数をプログラム内で定義できます
呼び出し元は各関数のパラメータを区別する必要はありません
実行時にプログラムが自動的にどの関数を決定するかを決定します。実行のために選択する関数。
例は次のとおりです:
// 1、如果用户传入一个参数,求平方 function sum(a){ console.log(a*a); } //如果用户传入两个参数,就求和 function sum(a,b){ console.log(a+b); } sum(4); //? sum(4,5); //?
上記の例では、本来の目的は、同じ名前の関数 sum() が異なるパラメーターに従って異なる結果を出力するようにすることですが、sum は関数の名前であり、本質的には変数です
2 番目の変数は最初の変数を上書きするため、上記の正しい出力の答えは NaN,9 になります。したがって、これは明らかに不可能です。
引数を使用すると、はるかに簡単になります。
以下の 2 つの例:
//2、 function calc(){ //如果用户传入一个参数,求平方 if(arguments.length==1){ console.log(arguments[0]*arguments[0]); }else if(arguments.length==2){ //如果用户传入两个参数,就求和 console.log(arguments[0]+arguments[1]); } } calc(4); //16 calc(4,5); //9 /*3、无论用户传入几个数字,都可以求和*/ function add(){ //arguments:[] //遍历arguments中每个元素,并累加 for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]); return sum;//返回和 } console.log(add(1,2,3)); //6 console.log(add(1,2,3,4,5,6)); //21
これは、引数のオーバーロードを使用した JS の効果です。簡単に理解すると、関数は実際のパラメータ、つまりパラメータの数によって決定されます。関数呼び出し内で決定!
上記は、編集者が紹介した Javascript の引数オブジェクトに関する知識です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。