「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 可変数の引数を JavaScript 関数に渡すにはどうすればよいですか?

可変数の引数を JavaScript 関数に渡すにはどうすればよいですか?

2024 年 11 月 18 日に公開
ブラウズ:177

How Can I Pass a Variable Number of Arguments to JavaScript Functions?

JavaScript 関数に可変数の引数を渡す

JavaScript では、配列から可変数の引数を送信する機能など、関数に引数を渡す際の柔軟性が提供されます。 &&&]

引数による変数 Arity

Python と同様、JavaScript には関数に渡されるすべての引数を表す特別な引数オブジェクトがあります。このオブジェクトには、各引数がインデックス可能なプロパティとして含まれています。例:

function func() { console.log(arguments.length); for (引数内の arg) console.log(arg); } func('a', 'b', 'c', 'd'); // 4 と 'a'、'b'、'c'、'd' を出力します
function func() {
  console.log(arguments.length);
  for (arg in arguments) console.log(arg);
}

func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'
配列を引数として渡す

ただし、配列を引数として関数に直接渡すことはできません。望ましい結果を達成します。代わりに、配列自体が単一の引数として扱われます。配列を個別の引数として渡すには、 apply() メソッドを使用できます。

var arr = ['a', 'b', 'c']; 関数 func() { コンソール.ログ(これ); // 'テスト' console.log(arguments.length); // 3 for (var i = 0; i function func() { console.log(arguments.length); for (arg in arguments) console.log(arg); } func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'これにより、'test'、3、'a'、'b'、および 'c' が出力されます。

Spread 構文 (ES6 )

ES6 以降、JavaScript にはスプレッド構文 (...) が導入され、同じことをより簡潔に実現する方法が提供されています。 result:

func(...arr);
function func() {
  console.log(arguments.length);
  for (arg in arguments) console.log(arg);
}

func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'
これにより、arr の要素が関数に渡される個々の引数に展開されます。

スプレッド構文を使用した名前付きパラメーター (ES6) )

名前付きパラメータをスプレッド構文と組み合わせて、一部の引数を配列として扱うように指定することもできます:

function func(first, Second, ...theRest) { //... }
function func() {
  console.log(arguments.length);
  for (arg in arguments) console.log(arg);
}

func('a', 'b', 'c', 'd'); // prints 4 and 'a', 'b', 'c', 'd'
結論

JavaScript では、引数オブジェクトを通じて、または ES6 以降ではスプレッド構文を使用して、関数に可変数の引数を渡すことができます。この柔軟性により、任意の数の入力を処理できる汎用関数の作成など、さまざまな使用例が可能になります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3