본문 바로가기
프로그래밍 개발/JS 기본 언어

Javascript 유사 배열 arguments

by Jinseok Kim 2020. 11. 10.
반응형

 

 

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.lenghtone('val1', 'val2');으로 인하여 함수로 전달된 실제 인자의 수인 두 개로 보고 2을 출력하였다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글