JavaScript は学習や仕事に関係するため、残りのパラメーターに関しては、関数の大部分を占める JavaScript についても理解する必要があります。そして関数は常に変化しています。この記事は JavaScript を理解して習得するのに役立ちます。
JavaScript 関数は、任意の数のパラメータを取ることができます。 C# や Java などの他の言語とは異なり、JavaScript 関数を呼び出すときに任意の数のパラメーターを渡すことができます。 JavaScript 関数では、不明な数の 関数引数 を許可します。 ECMAScript 6 より前の JavaScript には、これらの未知のパラメータまたは可変数のパラメータにアクセスするための変数がありました。これは、配列ではなく配列のようなオブジェクトでした。引数変数を理解するには、次のコードを検討してください:
function add(){ var result = 0; for(let i=0;i<arguments.length;i++){ result = result + arguments[i]; } return result; } var r = add(6,9,3,2); console.log(r); var t = add(7,56,9); console.log(t);
ご覧のとおり、引数オブジェクトは、未知または変数の関数パラメーターにアクセスするために使用されます。引数で length 属性と角括弧が使用されている場合でも、それは真の JavaScript 配列 ではありません。引数オブジェクトでは、pop、push、slice などの他の JavaScript 配列メソッドを使用できません。引数を使用するときの問題は次のとおりです:
JavaScript 関数の引数オブジェクトは実際の JavaScript 配列ではないため、pop、push、slice などの他の配列メソッドは使用できません。
内部関数で外部関数の引数オブジェクトにアクセスすることは困難です。これにアクセスするには、外部関数の引数関数を変数に代入し、それを内部関数で使用する必要があります。
引数オブジェクトを配列として使用したい場合は、Aarry.prototype.slice を介して手動で変換する必要があります。
ECMAScript 6 では、関数内の配列として未知の数のパラメーターを表す新機能、Rest パラメーターが導入されています。追加のパラメーターを配列として表すだけでなく、引数オブジェクトに関する多くの問題も解決します。上記の add 関数を、rest パラメーターを使用して書き換えます。
function add(...theArgs){ var result = 0; for(let i=0;i<theArgs.length;i++){ result = result + theArgs[i]; } return result; } var r = add(6,9,3,2); console.log(r); var t = add(7,56,9); console.log(t);
残りのパラメータは...theArgs または...args として定義できます。最後に名前を付けた関数パラメータの先頭に ... (3 つのドット) が付いている場合、それが関数の残りのパラメータになります。 JavaScript 関数の残りのパラメーターは、純粋な JavaScript 配列です。上記のコードでは、...theArgs は関数 add の残りのパラメーターです。これは、これが唯一の名前付きパラメーターであり、先頭に ... (3 つのドット) が付いているためです。残りのパラメータは JavaScript 配列であるため、次のコードに示すように、残りのパラメータ theArgs に対してプッシュやポップなどの操作を実行できます:
function add(...theArgs){ theArgs.push(10); var result = 0; for(let i=0;i<theArgs.length;i++){ result = result + theArgs[i]; } var lastItem = theArgs.pop(); console.log(lastItem); return result; }
JavaScript 関数の残りのパラメータは、他のパラメータとも連携できます。残りのパラメーター配列に特定のパラメーターを含めたくない場合は、関数内で他の名前付きパラメーターを使用する必要がある場合があります。次のコード ブロックを考えてみましょう:
function add(num1, num2, ...theArgs){ console.log(num1); console.log(num2); console.log(theArgs.length); } var r = add(6,9,3,2); var t = add(7,56,9);
最初の関数呼び出しでは、6 と 9 がそれぞれ num1 と num2 に割り当てられます。 2 番目の関数呼び出しでは、7 と 56 が num1 と num2 に割り当てられます。 3 番目のパラメーターを開始するパラメーターは、残りのパラメーター配列に割り当てられます。最初の 2 つのパラメータは残りのパラメータ配列の一部ではないことに注意してください。したがって、残りのパラメータにすべての値を含める場合は、最初からカンマ区切りの名前付きパラメータとして定義する必要があります。以下のコードではエラーが発生します:
function add(num1, ...theArgs,num2){ console.log(num1); console.log(num2); console.log(theArgs.length); }
上記のコードでは、rest パラメータが最後のパラメータではないため、JavaScript はエラーをスローします。残りのパラメータは最後の仮パラメータである必要があります。
JavaScript を使用すると、残りのパラメーターを破棄できます。これは、残りの変数データを別の 変数名 名に解凍できることを意味します。以下のコードを見てください:
function add(...[a,b,c]){ return a+b+c; } var r = add(6); console.log(r); var t = add(7,56,9); console.log(t);
最初の関数呼び出しでは a = 6、b = 未定義、c = 未定義が割り当てられ、2 番目の関数呼び出しでは a = 7、b = 56、c = 9 が割り当てられます。この例では、関数は渡された追加の引数を無視します。
JavaScript 関数の残りのパラメーターは、関数を使用した未知のパラメーターを使用する引数オブジェクトに比べて大幅に改善されています。これは純粋な JavaScript 配列であるため、すべての配列メソッドを使用できます。残りの変数データを名前付き変数に解凍できます。 REST パラメーターに任意の名前を付けることができます。これは、arguments キーワードを使用する場合に比べて、もう 1 つの大きな改善点です。
「JavaScript を理解する」シリーズの次回の記事では、JavaScript 関数のデフォルトのパラメーターを紹介しますので、お楽しみに。
JavaScript、関数の Rest パラメーターの理解はここで終わりです。一緒に勉強したり議論したりする皆さんを歓迎します:
関連書籍:
以上がJavaScript、関数内のRESTパラメータの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。