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