HOWTO · JavaScript

JavaScript 変数の引数数

JavaScript には、関数内の無制限の数の引数を処理する柔軟性があります。 このタイプの関数は、可変個引数関数にちなんで命名されています。 引数オブジェクトは配列要素と同様に描写されますが、長さ以外の配列などの他のプロパティはサポートされていません。 これは、残りのパラメーターとともに、可変数の引数を簡単に処理します。

このページの内容

JavaScript の arguments オブジェクトを介して可変数の引数を設定する原始的な方法があります。 これは配列のように動作しますが、length プロパティのみを持ち、配列の他の組み込みプロパティとは連携しません。

ただし、関数の arguments は、広い範囲で配列に追加することもできます。

関数で複数のパラメーターを指定する arguments 規則以外に、ES6 の更新である rest パラメーターがあります。 より具体的には、構文を観察すると、オブジェクトは、いくつかの引数を定義する spread 演算子の方法を受け入れます。

さらに、引数のクラスターと一緒に個々の引数を設定することもできます。

私たちの例セットでは、両方の方法がどれほど効率的に問題を簡単にするかを調べます。 1つは arguments オブジェクトに関するもので、もう 1つは rest パラメーター規則に焦点を当てています。

arguments オブジェクトを使用して、JavaScript で可変数のパラメーターを設定する

ここでは、関数 take で 3 パラメータを取ります。 arguments を使用する一般的な方法は、名前が付けられているとおりに直接指定することです。

しかし、arguments オブジェクトの機能を使用すると、すべてのパラメーターを配列要素と同じように繰り返すことができます。 したがって、複数の引数を処理する方法が整理されます。

コードスニペット:

function take(a, b, c) {
  for (var i = 0; i < arguments.length; i++) {
    if (i == 1) {
      arguments[i] = 'I am 2';
    }
    console.log(arguments[i]);
  }
}
take(1, 2, 3);

出力:

引数オブジェクトを使用して可変数のパラメータを設定

ご覧のとおり、arguments オブジェクトは、関数で言及されているパラメーターのインスタンスとして機能するだけでなく、元の値を変更することもできます。 また、arguments オブジェクトの typeof プロパティにより、パラメータの各タイプを識別できます。

Rest パラメータを使用して JavaScript で複数の引数を設定する

Rest パラメータは、arrow 関数を処理する ES6 の調整です。 この点で、自己境界を持つパラメーターを取ることができます。

以下の例の range1 および range2 引数に似ています。 そして、より大きな原因を考えたいという価値観のグループでもあります。

コードフェンスを確認してみましょう。

function rest(range1, range2, ...add) {
  console.log(range1);
  console.log(range2);
  return add.reduce((pre, cur) => {
    return pre + cur;
  });
}

console.log(rest(1, 4, 1, 2, 3, 4));

出力:

Rest パラメータを使用して複数の引数を設定する

この例では、range1 と range2 を開始境界と終了境界として設定し、...add には range1 から range2 までのすべての値が含まれます。 この単純なタスクは、Rest パラメーターがどのように機能するかを表すことです。