3

昨日JavaScriptのクラスを教えていたときに、生徒と私は、質問と答えに取り込む価値があると思ういくつかの興味深い機能に出くわしました。

Array.lengthchromeでJSコンソールに入力すると。が返されます1

同様に、をFunction.length返します1。これは次の理由で重要です。

JavaScriptのすべての関数は、実際にはFunctionオブジェクトです。(MDN JS Ref:機能)

したがって、Object.lengthおそらく他のすべてのネイティブオブジェクトは1、プロパティの値として返されlengthます。

では、最後に、なぜこの動作が発生するのでしょうか。

4

1 に答える 1

9

Function.lengthそれ自体が答えです:

関数が期待する引数の数を指定します。MDN JS Ref:Function.length

私たちが書くとき、私たちFunction.lengthはコンストラクターに正式な名前付きパラメーターの数を教えてくれるように頼んでいFunctionます(「オプション」-つまり非公式-パラメーターはarguments関数本体のプロパティを介してアクセスされます)。Functionコンストラクターは正確に1つの仮名前付きパラメーターを想定しているため、結果は1次のようになります。

new Function ([arg1[, arg2[, ... argN]],] functionBody)

functionBodyは、単一の仮名前付きパラメーターです。したがってFunction.lengthです1

于 2012-10-30T20:45:49.497 に答える