본문 바로가기

자바스크립트

함수 객체의 프로퍼티

함수는 객체다. 그러므로 함수는 프로퍼티를 가질 수 있다.

브라우저 콘솔에서 console.dir 메서드를 사용하여 함수 객체의 내부를 들여다 볼 수 있다.

함수 객체의 name 프로퍼티는 ES5 와 ES6에서 동작을 달리한다.

ES5에서는 익명함수인 경우 빈 문자열을 값으로 갖는다. 하지만 ES6에서는 함수 객체를 가르키는 식별자를 값으로 갖는다. 자바스크립트 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 식별자를 암묵적으로 생성하고, 거기에 함수 객체를 할당한다.

 

자바스크립트는 함수의 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.

함수가 호출되면 함수 몸체 내에서 암묵적으로 매개변수가 선언되고 undefined로 초기화 된 이후 인수가 할당된다.

함수의 매개변수보다 인수의 개수가 적은 경우, 함수는 undefined로 초기화 된 상태를 유지한다.

매개변수보다 많은 인수를 전달 했을 경우, 초과된 인수는 무시된다. 그냥 버려지는 것이 아니라 모든 인수는 암묵적으로 argument 객체의 프로퍼티로 보관된다.

위의 그림을 참고하면 arguments 객체는 인수를 프로퍼티 값으로 가지며 프로퍼티 키는 인수의 순서를 의미한다.

callee 프로퍼티는 함수 자신을 가르킨다.

length 프로퍼티는 인수의 개수를 가르킨다.

'자바스크립트' 카테고리의 다른 글

Javascript’s __proto__ vs prototype  (0) 2021.06.28
생성자 함수의 객체 생성  (0) 2021.06.09
Unexpected comma using map()  (0) 2021.05.22
Currying  (0) 2021.04.06
가비지 컬렉션  (0) 2021.04.03