javascript 함수에서 불특정 갯수의 인자를 처리하는 방법


arguments 라는 객체가 있다.
arguments[0] 은 첫번째 인자이고, 인자의 갯수는 arguments.length이다.

인자를 출력하는 테스트를 해보자.

function aaa(n) {
  for( var i=0; i<arguments.length; i++ )
    console.log(n, '> ', arguments[i]);
}
aaa(2,9,8);

실행결과는 다음과 같다.
2> 2 ... 첫번째 인자는 n으로도 접근할 수 있고, arguments[0]으로도 접근할 수 있다.
2> 9
2> 8






arguments.callee라는 객체가 있다. 그것은 호출된 함수 그 자체이다. alert(arguments.callee); 라고 해보면 함수 전체가 출력되는것을 보게된다.
함수에게 전달되어야 할 인자의 갯수는 arguments.callee.length이다. Length가 이런 값을 리턴하는것은 조금 어처구니가 없다.






함수의 인자 갯수가 많아지면, 인자의 순서를 지켜서 입력하는것이 번거로울 수가 있다.
이럴때는 인자를 dictionary로 전달한다.

function tell_me_what_to_do( x ) {
  if( x.money == 'enough' ) {
if( x.weather == 'sunny' )
return 'have fun';
if( x.weather != 'sunny' )
 return 'have fun!';
  }
}

tell_me_what_to_do( { weather: 'sunny', money: 'enough' } );