Function.length

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

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

説明

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

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

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

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

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

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, 既定値を持つ引数が最初に登場する前までの
// 引数だけが数に含まれる

仕様

仕様書 策定状況 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。JavaScript 1.1 で実装。
ECMAScript 5.1 (ECMA-262)
Function.length の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Function.length の定義
標準 このプロパティの configurable 属性が true となる。
ECMAScript (ECMA-262)
Function.length の定義
現行の標準  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
lengthChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
Configurable: trueChrome 完全対応 43Edge 完全対応 12Firefox 完全対応 37IE 未対応 なしOpera 完全対応 30Safari 未対応 なしWebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 37Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0nodejs 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応

関連情報