3.2.3 기본값은 함수의 인자 수에 포함되지 않는다
함수의 인자 수는 일반적으로 함수가 가지고 있는 공식 선언 매개변수의 수로 정의되며, 자바스크립트에서는 함수의 length 속성에서 가져올 수 있다.
function none() { } console.log(none.length); // 0 function one(a) { } console.log(one.length); // 1 function two(a, b) { } console.log(two.length); // 2
자바스크립트에서 기본값이 있는 매개변수는 인자 수를 계산할 때 계산되지 않으며 실제로 후속 매개변수도 계산되지 않는다.
function stillOne(a, b = 42) { } console.log(stillOne.length); // 1 function oneYetAgain(a, b = 42, c) { } console.log(oneYetAgain.length); // 1
stillOne 함수의 결과는 간단하다. 기본값이 없는 하나의 매개변수와 기본값이 있는 매개변수가 있으므로 그 인자 수는 1이다. oneYetAgain 함수의 결과는 c 매개변수에 명시적인 기본값이 없다는 점에서 더 흥미롭지만 앞에 있는 매개변수에 기본값이 있기 때문에 인자 수에 포함되지 않는다.