자바스크립트 함수의 arguments 객체

citron03·2022년 1월 22일
0

html, css, js

목록 보기
15/43

자바스크립트의 함수의 인자는 명시적으로 작성되지 않을 수 있다.
이때, 함수의 인자를 사용할 수 있게 arguments 객체가 존재한다.

function printNameAndETC(){
	let [name, ...etc] = arguments;
    // 구조 분해 할당으로 변수에 인자를 나누어 넣는다.
    console.log(name + "님은 " + etc + "입니다!");
}

printNameAndETC("shin", "멋지고", "잘생기고", "좋은 사람");
// shin님은 멋지고,잘생기고,좋은 사람입니다!

printNameAndETC("park", "자상한 사람");
// park님은 자상한 사람입니다!

printNameAndETC("kim");
// kim님은 입니다!

printNameAndETC();
// undefined님은 입니다!
  • 위의 코드와 같이 구조 분해 할당을 통해서 적절하게 인자를 변수에 나누어 담을 수 있다.
function printNameAndETC(name){
	let [nameCopy, ...etc] = arguments;
    // 구조 분해 할당으로 변수에 인자를 나누어 넣는다.
    console.log(nameCopy + "님은 " + etc + "입니다!");
}

printNameAndETC("jin", "시원시원한 사람");
// park님은 자상한 사람입니다!
  • 일부 변수가 함수의 인자로 넘어와 받더라도, arguments 객체는 모든 인자를 가지고 있다.
function visitedNames(){
	console.log(arguments);
	const firstVisited = arguments[0];
    console.log("첫 방문자는", firstVisited);
   	for(let i = 1; i < arguments.length; i++)
    	console.log(arguments[i]);
}

visitedNames("a", "b", "c", 
	["가", "나", "다"], 
	{"age" : 200, }, () => {});

/*
모든 인자가 담긴 배열이 출력된다.
첫 방문자는 a
b
c
['가', '나', '다']
{age: 200}
() => {}
*/
  • arguments는 [ ]를 통해서 각 인자에 접근할 수 있다.
profile
🙌🙌🙌🙌

0개의 댓글