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)); // 10
위 코드의 함수는 매개변수는 없지만 인자는 존재한다. → 자바스크립트에서는 매개변수가 없더라도 다수의 인자를 받을 수 있다.
arguments라는 약속된 키워드에 사용자가 전달한 인자가 들어있는 유사 배열이 담겨있다.
arguments.length
: 인자의 개수를 알 수 있다. → 사용자가 전달한 인자만큼 for문을 실행할 수 있다.arguments[i]
: 해당 순서에 들어온 인자를 알아낼 수 있다.arguments.length
는 함수에 전달된 실제 인자의 개수를 의미한다.Function.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
);
}
one('val1', 'val2'); // one.length 1 arguments 2
two('val1'); // two.length 2 arguments 1
매개변수가 하나고 인자는 두 개일 때 Function.length
는 1을 가리킨다.
함수가 몇 개의 매개변수를 정의하고 있는지와 몇 개의 인자를 받았는지가 일치해야 하는 경우 두 개의 값을 비교해서 에러를 발생시키거나 경고할 수 있다.