본문 바로가기

Dev.FrontEnd/JavaScript

3-3. 자바스크립트의 함수 / Argument

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
매개변수 x,y를 갖는add라는 함수를 정의하고,

인자를 넘기지 않은 상태로 호출하게 되면, 다음과 같은 결과를 도출하게 된다.

1
2
> add()
NaN // undefined에 대해 덧셈을 수행할 수 없습니다
cs
그리고 매개변수보다 많은 인자를 전달하게 되면, 다음과 같은 결과를 도출하게 된다.
1
2
> add(234)
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. 끝