arguments 객체
Language/JAVASCRIPT 2016. 12. 15. 16:32arguments
객체는 함수에 전달된 인수에 해당하는 Array
같은 객체입니다.
구문
arguments
설명
arguments
객체는 모든 함수 내에서 이용 가능한 지역 변수입니다. arguments
객체를 사용하여 함수 내에서 함수의 인수를 참조할 수 있습니다. 이 객체는 함수에 전달된 각 인수를 위한 항목(entry)을 포함합니다, 첫 번째 항목의 인덱스가 0에서 시작하는. 예를 들어, 함수에 인수 셋이 전달된 경우, 다음과 같이 참조할 수 있습니다:
arguments[0]
arguments[1]
arguments[2]
arguments는 설정될 수도 있습니다:
arguments[1] = 'new value';
arguments
객체는 Array
가 아닙니다. Array
와 비슷하지만 length
빼고는 어떤 Array
속성도 없습니다. 예를 들어, pop
메서드가 없습니다. 그러나 실제 Array
로 변환될 수 있습니다:
var args = Array.prototype.slice.call(arguments);
arguments를 실제 Array로 변환하기 위해 Array.from()
메서드 또는 전개 연산자를 사용할 수도 있습니다:
var args = Array.from(arguments);
var args = [...arguments];
당신이 형식상 받기로 선언된 것보다 많은 인수로 함수를 호출하는 경우 arguments
객체를 사용할 수 있습니다. 이 기법은 가변 인수가 전달될 수 있는 함수에 유용합니다. 함수에 전달된 인수의 수를 결정하기 위해 arguments.length
를 쓰세요, 그 뒤에 arguments
객체를 사용하여 각 인수를 처리하세요. 함수 signature에 매개변수의 수를 결정하기 위해서는, Function.length
속성을 쓰세요.
속성
arguments.callee
- 현재 실행 중인 함수를 가리킵니다.
arguments.caller
- 현재 실행 중인 함수를 호출한 함수를 가리킵니다.
arguments.length
- 함수에 전달된 인수의 수를 가리킵니다.
arguments[@@iterator]
- arguments의 각 인덱스 값을 포함하는 새로운 Array Iterator 객체를 반환합니다.
예
여러 문자열을 연결하는 함수 정의하기
이 예는 여러 문자열을 연결하는 함수를 정의합니다. 함수의 유일한 형식 인수는 연결할 항목을 구분하는 문자를 지정하는 문자열입니다. 함수는 다음과 같이 정의됩니다:
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
이 함수에 인수를 얼마든지 전달할 수 있으며 리스트 내 항목처럼 각 인수를 사용하여 리스트를 만듭니다.
// "red, orange, blue" 반환
myConcat(", ", "red", "orange", "blue");
// "elephant; giraffe; lion; cheetah" 반환
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
// "sage. basil. oregano. pepper. parsley" 반환
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
HTML 리스트를 만드는 함수 정의하기
이 예는 리스트 HTML을 포함하는 문자열을 만드는 함수를 정의합니다. 함수의 유일한 형식 인수는 리스트가 정렬되지 않은(bulluet(글 머리 기호)가 붙는) 경우 "u
" 또는 정렬된(번호가 매겨진) 경우 "o
"인 문자열입니다. 함수는 다음과 같이 정의됩니다:
function list(type) {
var result = "<" + type + "l><li>";
var args = Array.prototype.slice.call(arguments, 1);
result += args.join("</li><li>");
result += "</li></" + type + "l>"; // end list
return result;
}
이 함수에 인수를 얼마든지 전달할 수 있고, 표시된 유형의 리스트에 항목으로 각 인수를 추가합니다. 예를 들면:
var listHTML = list("u", "One", "Two", "Three");
/* listHTML은:
"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
*/
나머지, 기본 및 비구조화된 매개변수
arguments
객체는 나머지 매개변수, 기본 매개변수 또는 비구조화된 매개변수와 함께 사용될 수 있습니다.
function foo(...args) {
return arguments;
}
foo(1, 2, 3); // { "0": 1, "1": 2, "2": 3 }
그러나, 비엄격 함수에서는 mapped arguments
객체는 함수가 어떤 나머지 매개변수, 기본 매개변수 또는 비구조화된 매개변수든 포함하지 않는 경우에만 제공됩니다. 예를 들어, 기본 매개변수를 사용하는 다음 함수에서는, 100 대신에 10
이 반환됩니다:
function bar(a=1) {
arguments[0] = 100;
return a;
}
bar(10); // 10
이 예에서, 어떤 나머지 매개변수, 기본 매개변수 또는 비구조화된 매개변수가 없는 경우에는, 100이 반환됩니다:
function zoo(a) {
arguments[0] = 100;
return a;
}
zoo(10); // 100
출처 - https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/arguments
'Language > JAVASCRIPT' 카테고리의 다른 글
참고 강좌 (0) | 2016.12.23 |
---|---|
pply(), call() 메서드 (0) | 2016.12.15 |
구글맵(차트) (0) | 2014.12.12 |
prototypejs (0) | 2013.11.13 |
마우스 커서 포지션 이동 (0) | 2013.05.22 |