오늘은 모던 JavaScript 튜토리얼에서 나머지 매개변수와 스프레드 문법(https://ko.javascript.info/rest-parameters-spread)에 대해서 공부했다. 다음과 같은 질문을 작성했다.
함수에 넘겨주는 인수의 개수 제약은 존재하지 않는다. 하지만, 함수가 인수를 두 개 받는다고 가정하여 인수를 다섯 개 넘겨주어도 앞에 있는 두 개를 사용하고 나머지 세 개는 사용하지 않는다.
나머지 매개변수 ...를 붙이는 건 남아있는 함수의 매개변수들을 배열로 한데 모아 집어넣어라는 의미이다. 이 나머지 매개변수 ...를 통해 사용하고 싶은 매개변수는 앞에서 사용하고 남아있는 매개변수들을 배열로 모을 수 있다. 또한, 가장 중요한 건 나머지 매개변수 ...는 항상 마지막에 위치해야 한다. 왜냐하면, 나머지 매개변수는 남아있는 인수들을 한데 모으는 역할을 하기 때문에 중간에 사용하면 그 뒤에 사용할 매개변수는 사용할 수 없기 때문이다.
배열을 있는 그대로 전달하면 동작하지 않으며 숫자 목록을 전달할 때 동작하는 Math.max()처럼 배열을 숫자 목록으로 전달하면 스프레드 문법을 사용해야 한다. 스프레드 문법도 ...를 사용하기 때문에 나머지 매개변수와 비슷해 보이지만 하는 행동은 반대다.
let arr = [3, 5, 1];
alert( Math.max(...arr) ); // 5 (스프레드 문법이 배열을 인수 목록으로 바꿈)
위와 같이, 함수를 호출할 때 스프레드 문법 '...'를 사용하면 배열 arr이 인수 목록으로 확장된다.
...를 사용해본 적은 있지만 함수를 만들면서 인수를 받을 때 ...를 사용하면 나머지 매개변수가 되고, 함수를 호출할 때나 배열을 합칠 때 ...를 사용하면 스프레드 문법이 된다는 차이를 알지 못했었는데 이제는 코드를 보면서 아 이건 나머지 매개변수고 이건 스프레드 문법이구나 구분 지을 수 있게 되어서 좋았다.
'TIL' 카테고리의 다른 글
TIL - 20220714 (0) | 2022.07.14 |
---|---|
TIL - 20220713 (0) | 2022.07.13 |
TIL - 20220711 (0) | 2022.07.11 |
TIL - 20220710 (0) | 2022.07.10 |
TIL - 20220709 (0) | 2022.07.09 |