Function.length

length プロパティは、関数が期待する引数の数を示します。

試してみましょう

Function.length のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能

解説

length は function オブジェクトのプロパティであり、関数が期待する引数の数、つまり形式上の引数の数を示します。この数に残余引数 (en-US)は含まれず、既定値を持つ引数が最初に登場する前までしか含みません。これに対し、 arguments.length は関数のローカルスコープ内で用いられ、関数が実際に受け取った引数の数、つまり実引数の数を参照するのに用いるものです。

Function コンストラクターのデータプロパティ

Function コンストラクター自体は、Function オブジェクトです。この length データプロパティの値は 1 です。プロパティの属性は、 Writable: false、Enumerable: false、Configurable: true です。

Function プロトタイプのオブジェクトのプロパティ

Function プロトタイプオブジェクトの length プロパティの値は 0 です。

関数の length の使用

js
console.log(Function.length); /* 1 */

console.log(function () {}.length); /* 0 */
console.log(function (a) {}.length); /* 1 */
console.log(function (a, b) {}.length); /* 2 etc. */

console.log(function (...args) {}.length);
// 0, rest parameter は数に含まれない

console.log(function (a, b = 1, c) {}.length);
// 1, 既定値を持つ引数が最初に登場する前までの
// 引数だけが数に含まれる

仕様書

Specification
ECMAScript Language Specification
# sec-function-instances-length

ブラウザーの互換性

BCD tables only load in the browser

関連情報