Arguments
- Arguments 객체는 함수를 호출할 때, 전달한아규먼트들을 배열의 형태로 모아둔 유사배열 객체이다.
- 유사배열이므로, 배열의 메소드를 사용할 수 없다.
- 함수를 호출할 때 전달되는 아규먼트의 개수가 불규칙적일 때 유용하게 활용하자.
- 파라미터, 변수명, 함수명에 Arguments 사용 하지 않기.
Argument를 다양하게 다루는 방법
1. 그 자체 사용하기, length, 인덱싱
function printArguments(a, b, c) {
console.log(arguments);
console.log(arguments.length);
console.log(argumnets[0]);
console.log(argumnets[1]);
}
printArguments('Tooktak', '뚝딱', '도깨비');
printArguments('Tooktak');
printArguments('Tooktak', '뚝딱');
printArguments('Tooktak', '뚝딱', '도깨비', '금나와라');
2. 반복문
function printArguments() {
for (const arg of arguments) {
console.log(arg);
}
}
printArguments('Tooktak', '뚝딱', '도깨비');
printArguments('Tooktak');
printArguments('Tooktak', '뚝딱');
printArguments('Tooktak', '뚝딱', '도깨비', '금나와라');
Rest Parameter
- arguments 객체를 이용하는 것 말고도 불규칙적으로 전달되는 아규먼트를 다루는 방법.
- 파라미터 앞에 마침표 3개를 붙여주면, 여러 개로 전달되는 아규먼트들을 배열로 다룰 수 있다.
- arguments 객체는 유사배열이라 배열의 메소드를 활용할 수 없지만,
rest parameter는 배열이기 때문에 배열의 메소드를 자유롭게 사용할 수 있다.
1. ...args를 사용하면 배열 메소드 사용 가능.
function printArguments(...args) {
//args의 객체의 요소들을 하나씩 출력
for (const arg of args) {
console.log(arg);
}
}
printArguments('Tooktak', '뚝딱', '도깨비');
printArguments('Tooktak');
printArguments('Tooktak', '뚝딱');
printArguments('Tooktak', '뚝딱', '도깨비', '금나와라');
2. splice로 선택한 내용만 보이게 할 수 있다.
function printArguments(...args) {
console.log(args.splice(0, 2));
console.log(arguments.splice(0, 2));
}
printArguments('Tooktak', '뚝딱', '도깨비');
printArguments('Tooktak');
printArguments('Tooktak', '뚝딱');
printArguments('Tooktak', '뚝딱', '도깨비', '금나와라');
// (2) ["Tooktak", "뚝딱"]
// Uncaught TypeError
3. 일반 파라미터와 함께 사용 가능
- 정의된 파라미터에 argument를 먼저 할당하고, 나머지 argument를 배열로 묶는 역할을 하기 때문에
일반 파라미터와 함께 사용할 때는 반드시 가장 마지막에 작성하자.
function printWork(first, second, ...others) {
console.log('뚝딱이 잘하는 것');
console.log(`첫번째 : ${first}`);
console.log(`두번째 : ${second}`);
for (const arg of others) {
console.log(`그 외 : ${arg}`);
}
}
printWork('UXUI', '자바스크립트', '디자인', '기획', '존버')
// 뚝딱이 잘하는 것
// 첫번째 : UXUI
// 두번째 : 자바스크립트
// 그 외 : 디자인
// 그 외 : 기획
// 그 외 : 존버
728x90
'코딩도 합니다 > JS' 카테고리의 다른 글
[자바스크립트 js] this (0) | 2021.05.23 |
---|---|
[자바스크립트 js] Arrow Function / 화살표 함수 (0) | 2021.05.23 |
[자바스크립트 js] 파라미터 Parameter와 아규먼트 Argument 차이 / 파라미터의 기본값 (0) | 2021.05.23 |
[자바스크립트 js] 함수 만들기 / 함수 선언 / 함수 표현식 / 파라미터(매개변수) / 아규먼트(전달인자) / 즉시 실행 함수 (0) | 2021.05.23 |
[자바스크립트 js] 변수와 스코프 / 함수 스코프 / 블록 스코프 (0) | 2021.05.20 |