this
는 함수가 실행되는 컨텍스트 오브젝트를 참조한다.함수 내에서 arguments
는 매개변수 목록을 프로퍼티로 갖는 오브젝트이다.
arguments
자체가 배열은 아니고 일단 오브젝트다.
아래처럼 생겼다.
{
"0": 첫 번째 인자 값,
"1": 두 번째 인자 값,
"2": 세 번째 인자 값,
...
"length": 인자 개수,
"callee": Getter/Setter - strict 모드에서는 사용불가이므로 패스,
"Symbol(Symbol.iterator)": 이터레이터
}
func("a", "b")
이런 식으로 함수를 호출할 경우, 값은 아래와 같다.{
"0": "a",
"1": "b",
"length": 2,
"callee": Getter/Setter,
"Symbol(Symbol.iterator)": 이터레이터
}
function myFunc(a: any, b: any, ...args: any[]) {
const arr = [...arguments];
[...arguments].map((v) => v); // 배열에 구조분해할당 + 곧바로 map을 쓰는 응용도 가능
}