자바스크립트 기본 - arguments
arguments - https://opentutorials.org/course/743/6548
arguments란 함수에서 인자와 관련된 정보를 가지고 있는 객체 사용방법은 배열과 유사해서 유사배열이라고 한다.
매개변수 - function sum(a) 에서 a이다.
인자 - a(1) 처럼 호출하는 곳에서 정하는 값이다. 즉 인자를 매개변수로 전달한다고 생각하면 된다.
function sum(){ //인자가 몇개 들어올지 모르기 때문에 비워두고 안에있는 for문으로 인자의 개수를 체크한다.
var i, _sum = 0;
for(i = 0; i < arguments.length; i++){ //arguments는 자바스크립트가 가지고 있는 특수한 유사배열 객체이다. arguments는 인자로 전달받은 인자의 개수를 담는다. 맨 아래 구문에서 sum(1,2,3,4)으로 4개의 인자를 주었으므로 arguments.length는 4가 된다.
document.write(i+' : '+arguments[i]+'<br />');
_sum += arguments[i]; //_sum에는 argument[0],argument[1],argument[2],argument[3] 의 값들을 모두 더해서 저장한다. 1+2+3+4=10
}
return _sum;
}
document.write('result : ' + sum(1,2,3,4)); //결과값은 10이다.
매개변수의 수
매개변수와 관련된 두가지 수가 있다.
하나는 함수.length, 다른 하나는 arguments.length이다.
arguments.length는 함수로 전달된 실제 인자의 수를 의미하고, 함수.length는 함수에 정의된 인자의 수를 의미한다.
아래의 예제를 통해 함수.length, arguments.length의 차이점을 알 수 있다.
function zero(){
console.log(
'zero.length', zero.length,
'arguments', arguments.length
);
}
function one(arg1){
console.log(
'one.length', one.length,
'arguments', arguments.length
);
}
function two(arg1, arg2){
console.log(
'two.length', two.length,
'arguments', arguments.length
);
}
zero(); // zero.length 0 arguments 0, 둘다 0이 나와서 차이점을 알 수 없음.
one('val1', 'val2'); // one.length 1 arguments 2, one.length가 1인이유는 arg1의 개수를 세기 때문이며 arguments.length가 2인 이유는 val1, val2의 개수를 세기 때문이다.
two('val1'); // two.length 2 arguments 1, two.length가 2인 이유는 arg1, arg2의 개수를 세기 때문이며 arguments.length가 1인 이유는 val1의 개수를 세기 때문이다.