[TIL / JavaScript] arguments

Changyun Go·2022년 1월 23일
0
post-thumbnail

arguments는 함수 안에서 인자와 관련된 정보를 담는 객체다.

사용방법이 배열과 비슷하기 때문에 유사 배열이라고 한다.

인자 vs 매개변수

엄격히 말하면 인자와 매개변수는 다르다.

  • 인자 : 함수로 전달된 값을 의미한다.
  • 매개변수 : 인자가 저장되는 함수 내부의 변수를 의미한다.
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 vs Function.length

  • 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을 가리킨다.

함수가 몇 개의 매개변수를 정의하고 있는지와 몇 개의 인자를 받았는지가 일치해야 하는 경우 두 개의 값을 비교해서 에러를 발생시키거나 경고할 수 있다.

Reference


0개의 댓글