모던자바스크립트 DeepDive : 18장 함수와 일급 객체

te-ing·2022년 4월 22일
0
post-thumbnail

함수 객체의 arguments 프로퍼티 값은 arguments 객체인데, 이는 함수 호출 시 전달된 인수의 정보를 담고 있는 순회 가능한(iterable)유사 배열 객체이다.
쉽게 말하자면 arguments 객체는 인자들이 배열 형태로 저장된 객체인 것이다.

일급객체

  1. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다.
  2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
  3. 함수의 매개변수에 전달할 수 있다.
  4. 함수의 반환값으로 사용할 수 있다.

위와 같은 조건을 만족하는 객체를 일급객체 라고 하는데, 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급객체이다.

일급객체로서 함수가 가지는 가장 큰 특징은 일반 객체와 같이 함수의 매개변수에 전달할 수 있다는 것이다.

arguments 프로퍼티

함수 객체의 arguments 프로퍼티 값은 arguments 객체인데, 이는 함수 호출 시 전달된 인수의 정보를 담고 있는 순회 가능한(iterable)유사 배열 객체이다.

Rest 파라미터

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 파라미터를 도입함으로써 이러한 번거로움이 해소되었다.

length 프로퍼티

function foo() {}
console.log(foo.length); // 0
function bar(x, y) {
	return x * y;
}
console.log(bar.length); // 2

함수를 정의할 때 선언한 매개변수의 개수를 가리킨다.

profile
병아리 프론트엔드 개발자🐣

0개의 댓글