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' } );