→
length は function オブジェクトのプロパティであり、関数が期待する引数の数、つまり形式上の引数の数を示します。この数に は含まれず、既定値を持つ引数が最初に登場する前までしか含みません。これに対し、arguments.length は関数のローカル スコープ内で用いられ、関数が実際に受け取った引数の数、つまり実引数の数を参照するのに用いるものです。
Function コンストラクター自体は、Function オブジェクトです。この length データプロパティの値は 1 です。プロパティの属性は、Writable: false、Enumerable: false、Configurable: true です。
Function プロトタイプオブジェクトの length プロパティの値は 0 です。
D=Function.length; //=1 D=(function(){}).length; //=0 D=(function(P1){}).length; //=1 D=(function(P1,P2){}).length; //=2 D=(function(...args){}).length; //=0 D=(function(a, b=1, c){}).length; //=1: 既定値を持つ引数が最初に登場する前までの引数だけが数に含まれる