Chapter 3-3. 자바스크립트의 함수 / Arugument
Argument
함수 인자 Argument
parameter : 함수를 정의하는 코드에서 괄호 안에 정의하고 있는 변수 ( = 매개변수 )
arguments : 함수를 호출하는 곳에서 함수에 전달하는 값 ( = 인자 )
argument는 배열과 비슷한 객체를 말한다.
자바스크립트에서는 함수에서 정의하는 매개변수 개수와실제로 호출에 사용되는 인자의 개수가반드시 같지 않아도 된다.
함수에서 정의한 매개변수의 수보다 많은 수의 인자값이 전달되면
자바스크립트는 Arguments 객체를 생성하고
( Arguments 타입의 객체는 함수가 호출되면 자바스크립트가 자동으로 생성하는 객체이다.)
객체의 값을 앞에서부터 차례로 받아서 매개변수에 할당하고 남는 인자값은 무시하기 때문이다.
이렇게 남은 인자값도 arguments 객체를 통해 접근할 수 있다.
반대로 정해진 매개변수의 수보다 적은 수의 인자 값이 넘어오면
앞에서부터 매개변수의 값이 차례로 채워지고 받지 못한 매개변수는 undefined가 된다.
Example>
1 2 3 4 | function add(x, y) { var total = x + y; return total; } | cs |
인자를 넘기지 않은 상태로 호출하게 되면, 다음과 같은 결과를 도출하게 된다.
1 2 | > add() NaN // undefined에 대해 덧셈을 수행할 수 없습니다 | cs |
그리고 매개변수보다 많은 인자를 전달하게 되면, 다음과 같은 결과를 도출하게 된다.
1 2 | > add(2, 3, 4) 5 // 처음의 두 수가 더해집니다. 4는 무시됨 | cs |
Argument.callee
argument.callee 는 익명 함수에서 자신을 참조해서 재귀호출을 구현할 때 유용하게 사용할 수 있다.
생성자의 this와 유사한 개념이다.
callee는 현재 실행되고 있는 함수 객체를 나타낸다.
this가 새롭게 생성된 객체가 자신을 가리키는데 사용되는 방법이라면(this에 대해서는 뒤에서 다룰 예정이다.)
callee는 함수 객체 자신을 가리키는 수단이다.
code>
1 2 3 4 5 6 | function counter() { if (!arguments.callee.count) { arguments.callee.count = 0; } return arguments.callee.count++; } | cs |
counter 함수가 몇번 호출되었는지 기억하는 함수로 예를 들었다.
함수 인자 - Function
함수 인스턴스를 생성하는 함수이다.
function 과는 맨 앞이 대문자인 것이 다르다.
Object가 Object 인스턴스를 생성하는 생성자라면
Function 은 함수 인스턴스를 생성하는 생성자라고 할 수 있다.
#포스팅 내용은 황인균 님의 자바스크립트 객체지향 프로그래밍 이라는 책의 내용을 기반으로 작성되었습니다.
Chapter 3-3. 끝
'Dev.FrontEnd > JavaScript' 카테고리의 다른 글
5. 자바스크립트 호이스팅(Hoisting) (0) | 2016.07.08 |
---|---|
4. 자바스크립트의 변수 스코프(Variable scope)에 대하여 (0) | 2016.07.08 |
3-2. 자바스크립트 함수 / 정의, 종류 (0) | 2016.07.06 |
3-1. 자바스크립트의 함수(Function) / 함수의 역할과 함수 모델링 (0) | 2016.07.06 |
2. 자바스크립트 자료형 / 원시데이터형 (0) | 2016.07.05 |