[1,2,3]. panjang dapat 3, "123" pun boleh dapat 3, semua orang yang tahu serba sedikit tentang js ini.
Tetapi apakah yang akan diperolehi eval.length, RegExp.length, "".toString.length, 1..toString.length?
Kami masing-masing mendapat 1, 2, 0, 1 Apakah yang diwakili oleh nombor ini?
Malah, panjang fungsi mendapat bilangan parameter formal.
Mari kita lihat contoh:
function test(a,b,c) {} test.length // 3 function test(a,b,c,d) {} test.length // 4
Bukankah ia sangat mudah, tetapi terdapat juga perkara istimewa Jika parameter dipanggil melalui argumen di dalam fungsi tanpa benar-benar menentukan parameter, panjang hanya akan mendapat 0.
function test() { console.log( arguments );} test.length // 0
Fungsi ini sememangnya boleh lulus dalam parameter, dan parameter juga dipanggil secara dalaman, tetapi panjang tidak dapat mengetahui bilangan parameter yang dihantar masuk.
Bilangan parameter sebenar hanya boleh diperolehi melalui panjang argumen apabila fungsi dilaksanakan.
function test() { console.log( arguments.length );} test(1,2,3); // 输出 3 test(1,2,3,4); // 输出 4
Jadi atribut panjang fungsi hanya boleh mendapatkan bilangan parameter formalnya, tetapi bukan bilangan parameter sebenar.