関数で受け取る引数の数を取得する

Function オブジェクトに含まれる length プロパティを参照すると関数で受け取る引数の数を取得することができます。これは実際に受け取った引数の数ではなく、関数が定義されたときに記述された引数の数です。ここでは Function オブジェクトの length プロパティを使って関数の引数の数を取得する方法について解説します。

(Last modified: )

引数の数を取得する(length)

関数でいくつの引数を受け取るように定義されているのかを参照するときにに使用されるのが Function オブジェクトの length メソッドです。書式は次の通りです。

関数名.length

実際に関数が受け取った引数ではなく、関数を定義したときにいくつの引数を受け取るように定義したのかを取得します。

次のサンプルをみてください。

function dispTotal(x, y, z){
  let sum = x + y + z;
  return sum;
}

console.log(dispTotal.length);
>> 3

関数 dispTotal は 3 つの引数を受け取るように定義されています。その為、この関数の length プロパティは 3 となります。

引数にデフォルト値が設定されている場合

引数の中にデフォルト値が設定された引数がある場合、 length プロパティは最初のデフォルト値が設定された引数の前の引数までの数を返します。次のサンプルをみてください。

function dispPersonal(old, name = 'none', address){
  console.log('old = ' + old);
  console.log('name = ' + name);
  console.log('address = ' + address);
}

console.log(dispPersonal.length);
>> 1

関数 dispPersonal は 3 つの引数を受け取るように定義されていますが、 2 つ目の引数にデフォルト値が設定されているため length プロパティの値はデフォルト値が設定されている一つ前の引数までとなるため 1 となります。

※ 引数のデフォルト値の設定については「引数のデフォルト値を設定する」を参照されてください。

可変長引数が含まれている場合

length プロパティには可変長引数は含まれないため、可変長引数を除いた引数の数を返します。次のサンプルをみてください。

function calcSum(start, ...num){
  let sum = start;
  for (let i = 0 ; i < num.length ; i++){
    sum += num[i];
  }

  return sum;
}

console.log(calcSum.length);
>> 1

関数 calcSum は通常の引数が 1 つと可変長引数をを受け取るように定義されています。 length プロパティには可変長引数は含まれないため 1 となります。

※ 可変長引数の設定については「可変長引数を記述する」を参照されてください。

-- --

Function オブジェクトの length プロパティを使って関数の引数の数を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。