함수 객체의 arguments 프로퍼티 값은 arguments 객체인데, 이는 함수 호출 시 전달된 인수의 정보를 담고 있는 순회 가능한(iterable)유사 배열 객체이다.
쉽게 말하자면 arguments 객체는 인자들이 배열 형태로 저장된 객체인 것이다.
위와 같은 조건을 만족하는 객체를 일급객체
라고 하는데, 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급객체이다.
일급객체로서 함수가 가지는 가장 큰 특징은 일반 객체와 같이 함수의 매개변수에 전달할 수 있다는 것이다.
함수 객체의 arguments 프로퍼티 값은 arguments 객체인데, 이는 함수 호출 시 전달된 인수의 정보를 담고 있는 순회 가능한(iterable)유사 배열 객체이다.
function sum(...args) { // 함수에 전달된 인수들의 목록을 배열로 전달받는다.
return args.reduce((pre, cur) => pre + cur, 0);
}
console.log(sum(1,2,3,4,5)); // 15
arguments 프로퍼티는 유사 배열 객체이기 때문에 배열 메서드를 사용하려면 Function.prototype.call
, Function.prototype.apply
를 사용해 간접 호출해야 했었는데, ES6에서 Rest 파라미터를 도입함으로써 이러한 번거로움이 해소되었다.
function foo() {}
console.log(foo.length); // 0
function bar(x, y) {
return x * y;
}
console.log(bar.length); // 2
함수를 정의할 때 선언한 매개변수의 개수를 가리킨다.