JavaScript functionのlengthプロパティの使用説明

894 ワード

[1,2,3]. lengthは3,"123"を得ることができる.lengthも3を得ることができて、これはjsを少し知っているのはすべて知っています.
でもlength ,RegExp. length ,"".toString. length ,1..toString. lengthは何を得ますか?
それぞれ1,2,0,1を得て、これらの数字は何を表していますか?
実は関数のlengthが得たのは形パラメータの個数です.
例を簡単に見てみましょう

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

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

簡単ではありませんが、関数内部がargumentsによってパラメータを呼び出し、実際にパラメータを定義していない場合、lengthは0しか得られません.

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

この関数は確かにパラメータを伝達することができ,内部でもパラメータを呼び出すことができるが,lengthは伝達パラメータの個数を知ることができない.関数の実行時にargumentsを通過するしかない.lengthは実パラメータ数を得る.

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

したがって,関数のlength属性は彼の形パラメータの個数しか得られず,実パラメータの個数は知ることができない.