ホームページ > 記事 > ウェブフロントエンド > JavaScriptの関数のlength属性を簡単に分析_基礎知識
[1,2,3].length は 3 を取得でき、"123".length も 3 を取得できます。js について少し知っている人なら誰でもこれを知っています。
しかし、eval.length、RegExp.length、"".toString.length、1..toString.length は何を取得するのでしょうか?
それぞれ 1、2、0、1 になります。これらの数字は何を表しますか?
これは、グループの多くの新参者が尋ねてきた質問です。実際、関数の長さは仮パラメータの数を取得します。
例を簡単に見てみましょう:
関数 test(a,b,c,d) {}
test.length // 4
非常に単純ですが、実際にパラメータを定義せずに関数内の引数を通じてパラメータを呼び出した場合、長さは 0 しか取得されません。
この関数は確かにパラメータを渡すことができ、パラメータも内部的に呼び出されますが、length は渡されるパラメータの数を知ることができません。
実際のパラメータの数は、関数の実行時に argument.length を通じてのみ取得できます。
つまり、関数の長さ属性は仮パラメータの数のみを取得でき、実際のパラメータの数は取得できません。