[1,2,3]。長さは3、「123」を取得できます。
しかし、eval.length、regexp.length、 "" .tostring.length、1..tostring.length getは何ですか?
それぞれ1、2、0、および1を取得します。これらの数字は何を表していますか?
これは、グループ内の多くの新しい友人が尋ねてきた質問です。実際、関数の長さは正式なパラメーターの数です。
簡単な例を見てみましょう:
コードコピーは次のとおりです。
関数テスト(A、B、C){}
test.length // 3
関数テスト(A、B、C、D){}
test.length // 4
とても簡単ではありませんが、特別なものもあります。引数を介してパラメーターが内部的に呼び出され、実際のパラメーターが定義されていない場合、長さは0のみになります。
コードコピーは次のとおりです。
function test(){console.log(arguments);}
test.length // 0
この関数は実際にパラメーターを渡すことができ、パラメーターは内部的にも呼ばれますが、長さは渡されたパラメーターの数を知ることができません。
実際のパラメーターは、関数が実行された場合にのみ、引数を使用して取得できます。
コードコピーは次のとおりです。
function test(){console.log(arguments.length);}
テスト(1,2,3); //出力3
テスト(1,2,3,4); //出力4
したがって、関数の長さプロパティは、その正式なパラメーターの数のみを取得できますが、実際のパラメーターの数を知ることはできません。