REST 파라미터
Rest 파라미터는 매개변수 이름 앞에 세개의 점을 붙여 정의한 매개변수를 의미한다. Rest 파라미터의 특징은 특정 인수의 갯수를 지정할 필요가 없이 들어온 인수를 배열로 바꿔 전달받을 수 있다는 점이다.
function example(...rest){
console.log(rest);
}
example(1,2,3,4,5,6);
함수에 전달된 인수들은 순서대로 파라미터와 rest 파라미터에 할당된다.
function example(param1, param2, ...rest){
console.log(param1);
console.log(param2);
console.log(rest);
}
example(1,2,3,4,5,6);
또한 ES6 문법 중 하나인
화살표 함수에는 함수 객체의 arguments 프로퍼티가 없으므로 화살표 함수로 가변 인자 함수를 구현해야 할 때는 반드시 rest 파라미터를 사용해야 한다.
<< ?
// ES6 : 처음부터 배열이므로 변환의 필요성이 없음
function sum(...args) {
console.log(arguments); console.log(Array.isArray(args));
return args.reduce((pre, cur) => pre + cur);
}
console.log(sum(1, 2, 3, 4, 5));
//ES5
function sum() {
var array = Array.prototype.slice.call(arguments);
return array.reduce(function (pre, cur) {
return pre + cur;
});
}
console.log(sum(1, 2, 3, 4, 5)); // 15
Spread Syntax
Spread Syntax
는 피연산자를 개별적으로 분리하는 문법으로, rest 파라미터는 이로부터 나온다. 배열과 문자 set과 map은 이터러블이며 일반 객체는 spread 문법의 대상이 될 수 없다.
console.log(...[1, 2, 3]) // 1, 2, 3
console.log(...'Hello'); // H e l l o
console.log(...new Map([['a', '1'], ['b', '2']])); // [ 'a', '1' ] [ 'b', '2' ]
console.log(...new Set([1, 2, 3])); // 1 2 3
// 이터러블이 아닌 일반 객체는 Spread 문법의 대상이 될 수 없다.
console.log(...{ a: 1, b: 2 });
// TypeError: Found non-callable @@iterator
Spread 문법의 사용방법
// push
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(...arr2);
console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
//slice
const arr1 = [1, 2, 3, 6];
const arr2 = [4, 5];
arr1.splice(3, 0, ...arr2);
console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ]
'front-end > javascript' 카테고리의 다른 글
[Javascript] 자주 사용하는 정규표현식과 공부 사이트 (0) | 2019.09.21 |
---|---|
[Javascript] ES6, let vs const, 호이스팅과 객체 리터럴, 디스트럭쳐링 (0) | 2019.09.20 |
[javascript] StopWatch를 통해 보는 시간지연함수 (0) | 2019.09.04 |
자바스크립트 AJAX (1/2) , XMLHttpRequest 그리고 HTTP METHOD (0) | 2019.08.28 |
[javascript] Web Storage 웹 스토리지와 쿠키의 개념과 사용법 (0) | 2019.08.24 |
댓글