ECMAScript arguments 객체
- 이전 페이지 함수 개요
- 다음 페이지 Function 객체
arguments 객체
함수 코드에서 특수 객체 arguments를 사용하여 개발자파라미터 이름을 명확히 지정하지 않아도 됩니다그래서 그들을 접근할 수 있습니다.
예를 들어, 함수 sayHi()에서 첫 번째 파라미터는 message입니다. arguments[0]로도 이 값을 접근할 수 있습니다. 즉, 첫 번째 파라미터의 값입니다(첫 번째 파라미터는 위치 0에 있으며, 두 번째 파라미터는 위치 1에 있으며, 이를 이어 나갑니다).
따라서 명확히 이름을 지정하지 않아도 함수를 재구성할 수 있습니다:
function sayHi() { if (arguments[0] == "bye") { return; } alert(arguments[0]); }
매개변수 개수 검사
함수의 매개변수 개수를 검사하기 위해 arguments 객체를 사용할 수 있으며, arguments.length 속성을 참조합니다.
다음 코드는 함수 호출마다 사용된 매개변수의 개수를 출력합니다:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
위의 코드는 "2", "0", "1" 순으로 표시됩니다.
주의사항:다른 프로그래밍 언어와 달리, ECMAScript는 함수에 전달된 매개변수의 개수가 함수 정의의 매개변수 개수와 일치하는지 확인하지 않습니다. 개발자가 정의한 모든 함수는 어떤 개수의 매개변수를 받을 수 있으며(NetScape 문서에 따르면 최대 255개), 어떤 오류도 발생하지 않습니다. 누락된 매개변수는 undefined로 전달되고, 초과된 매개변수는 무시됩니다.
함수 오버로드 모의
arguments 객체를 사용하여 함수에 전달된 매개변수의 개수를 확인하여 함수 오버로드를 모의할 수 있습니다:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); // "15" 출력 doAdd(40, 20); // "60" 출력
参数가 하나만 있을 때, doAdd() 함수는 매개변수에 5를 추가합니다. 두 개의 매개변수가 있을 때, 두 개의 매개변수를 더하고 그 합을 반환합니다. 따라서, doAdd(10)은 "15"을 출력하고, doAdd(40, 20)은 "60"을 출력합니다.
오버로드보다 좋지 않지만, ECMAScript의 이러한 제한을 피하는 데는 충분합니다.
- 이전 페이지 함수 개요
- 다음 페이지 Function 객체