[1,2,3]. 길이는 3을 얻을 수 있고, "123"도 3을 얻을 수 있습니다. js에 대해 조금 아는 사람은 누구나 이것을 알 것입니다.
그런데 eval.length, RegExp.length, "".toString.length, 1..toString.length는 무엇을 얻나요?
각각 1, 2, 0, 1을 얻습니다. 이 숫자는 무엇을 나타냅니까?
사실 함수의 길이는 형식 매개변수의 수를 얻습니다.
예를 간단히 살펴보겠습니다.
function test(a,b,c) {} test.length // 3 function test(a,b,c,d) {} test.length // 4
아주 간단하지만 특별한 것도 있습니다. 실제로 매개변수를 정의하지 않고 함수 내부에서 인수를 통해 매개변수를 호출하면 길이는 0만 얻게 됩니다.
function test() { console.log( arguments );} test.length // 0
이 함수는 실제로 매개변수를 전달할 수 있고 매개변수도 내부적으로 호출되지만 길이는 전달된 매개변수의 수를 알 수 없습니다.
실제 매개변수의 개수는 함수 실행 시 인수 길이를 통해서만 얻을 수 있습니다.
function test() { console.log( arguments.length );} test(1,2,3); // 输出 3 test(1,2,3,4); // 输出 4
따라서 함수의 길이 속성은 형식 매개변수의 개수만 얻을 수 있고 실제 매개변수의 개수는 얻을 수 없습니다.