ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの関数のlength属性を簡単に分析_基礎知識

JavaScriptの関数のlength属性を簡単に分析_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:46:451087ブラウズ

[1,2,3].length は 3 を取得でき、"123".length も 3 を取得できます。js について少し知っている人なら誰でもこれを知っています。

しかし、eval.length、RegExp.length、"".toString.length、1..toString.length は何を取得するのでしょうか?

それぞれ 1、2、0、1 になります。これらの数字は何を表しますか?

これは、グループの多くの新参者が尋ねてきた質問です。実際、関数の長さは仮パラメータの数を取得します。
例を簡単に見てみましょう:

コードをコピー コードは次のとおりです:

function test(a,b,c) {}
test.length // 3

関数 test(a,b,c,d) {}
test.length // 4

非常に単純ですが、実際にパラメータを定義せずに関数内の引数を通じてパラメータを呼び出した場合、長さは 0 しか取得されません。

コードをコピー コードは次のとおりです。

function test() { console.log(引数 ); }
test.length // 0

この関数は確かにパラメータを渡すことができ、パラメータも内部的に呼び出されますが、length は渡されるパラメータの数を知ることができません。
実際のパラメータの数は、関数の実行時に argument.length を通じてのみ取得できます。

コードをコピー コードは次のとおりです。

function test() { console.log( argument.length );}
test(1,2,3); // 出力 3
test(1,2,3,4); // 出力 4
;

つまり、関数の長さ属性は仮パラメータの数のみを取得でき、実際のパラメータの数は取得できません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。