# Arguments

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다. 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다. (배열과 유사하지만 배열은 아님)

```javascript
function sum() {
    var i, _sum = 0;
    for(i = 0; i < arguments.length; i++) {
        document.write(i+' : '+arguments[i]+'<br />');
        _sum += arguments[i];
    }
    return _sum;
}
document.write('result : ' + sum(1,2,3,4));
```

**매개변수와 인자의 차이**

function a (arg) {...}//여기서 arg가 매개변수이다.

a(1);//이 때 1이 인자이다.

자바스크립트에서는 함수에 매개변수가 없어도 여러개의 인자를 전달할 수 있다. 그렇기 때문에 몇 개의 인자가 들어올 지 모르기 때문에 arguments.length를 이용할 수 있다. for문 안에서 argument는 배열과 유사한 객체를 말한다. 이 argument 안에는 사용자가 전달한 인자가 들어가있다.이 객체를 통해서 사용자의 인자에 접근할 수 있는 기능을 제공한다. 따라서 위의 코드에서는 사용자가 전달한 인자의 수만큼 for문이 실행된다. 즉, 인자 값 1+2+3+4 를 실행한 값이 결과로 출력된다.

**argument의 기능**

1. 인자 갯수를 알 수 있다.
2. 각각의 인자값을 알 수 있다.(고로 합도 구할 수 있다.)

**함수명.length()** : 매개변수의 갯수

**arguments.length()** : 함수에 전달된 인자의 갯수

경우에 따라서는 위의 2가지 사항이 일치해야한다.
