반응형
arguments 이란?
함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다. 이 arguments배열에는 arguments을 품고 있는 함수를 호출할 때 입력한 인자가 담겨있다.
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));
- 함수 sum은 인자로 전달된 값을 모두 더해서 리턴하는 함수다. 그런데 1행의 sum()을 보면 함수 sum은 인자에 대한 정의가 없이 비워져있다. 하지만 마지막 라인에서는 4개의 인자를 함수 sum으로 전달하고 있다.
- 함수의 정의부분에서 인자에 대한 구현이 없음에도 인자를 전달 할 수 있는것을 볼 수 있는데 그것은 arguments라는 특수한 배열이 있기 때문이다.
- arguments는 함수안에서 사용할 수 있도록 그 이름이나 특성이 약속되어 있는 일종의 배열이다.
- arguments[0]으로 함수로 전달된 첫번째 인자(1)를 알아낼 수 있다. 또 arguments.length를 이용해서 함수로 전달된 인자의 개수를 알아낼 수도 있다. 이러한 특성에 반복문을 결합하면 함수로 전달된 인자의 값을 순차적으로 가져올 수 있다. 그 값을 더해서 리턴하면 인자로 전달된 값에 대한 총합을 구하는 함수를 만들 수 있다.
- ※ 여기서 '+='는 예로 a+=b라면 a=a+b을 뜻한다.
매개변수의 수
- 매개변수와 관련된 두가지 수가 있다. 하나는 함수.length, 다른 하나는 arguments.length이다.
- arguments.length는 함수로 전달된 실제 인자의 수를 의미한다.
- 함수이름.length는 함수에 정의된 인자의 수를 의미한다.
function one(arg1){
console.log(
'one.length', one.length,
'arguments', arguments.length
);
}
one('val1', 'val2');
- 결과값을 보면 함수이름.lenght는 함수에 정의된 function one(arg1)의 함수 인자 arg1을 자체 하나라고 보고 1로 출력되었다.
- 반면 arguments.lenght는 one('val1', 'val2');으로 인하여 함수로 전달된 실제 인자의 수인 두 개로 보고 2을 출력하였다.
반응형
'프로그래밍 개발 > JS 기본 언어' 카테고리의 다른 글
Javascript 함수의 호출 (0) | 2020.11.12 |
---|---|
Javascript 클로저 (0) | 2020.11.10 |
Javascript 값으로서의 함수와 콜백 (0) | 2020.11.10 |
Javascript 함수지향-유효범위 (0) | 2020.11.09 |
Javascript 정규표현식(regular expression)에 대한 기본 (0) | 2020.11.09 |
댓글