Function: length
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
length
はFunction
インスタンスのプロパティで、関数が期待する引数の数を示します。
試してみましょう
function func1() {}function func2(a, b) {}console.log(func1.length);// 期待される出力結果: 0console.log(func2.length);// 期待される出力結果: 2
値
数値です。
Function: length のプロパティ属性 | |
---|---|
書込可能 | 不可 |
列挙可能 | 不可 |
設定可能 | 可 |
解説
Function
オブジェクトのlength
プロパティは、関数が期待する引数の数、つまり形式上の引数の数を示します。
これに対し、arguments.length
は関数のローカルスコープ内で用いられ、関数が実際に受け取った引数の数、つまり実引数の数を参照するのに用いるものです。
Function
コンストラクター自体は、Function
オブジェクトです。このlength
データプロパティの値は 1 です。
歴史的な理由により、Function.prototype
は自身を呼び出すことができます。Function.prototype
のlength
は0
の値を持ちます。
例
関数の length の使用
js
console.log(Function.length); // 1console.log((() => {}).length); // 0console.log(((a) => {}).length); // 1console.log(((a, b) => {}).length); // 2 etc.console.log(((...args) => {}).length);// 0, rest parameter は数に含まれないconsole.log(((a, b = 1, c) => {}).length);// 1, 既定値を持つ引数が最初に登場する前までの// 引数だけが数に含まれるconsole.log((({ a, b }, [c, d]) => {}).length);// 2, 分割パターンは、それぞれ単一の引数としてカウントされる
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification # sec-function-instances-length |