Spread 연산자
Syntax[...iterable]
이터러블 오브젝트를 하나씩 전개
[...iterable]
[...] 처럼 [] 안에 점(.) 3개 작성
이어서 이터러블 오브작트 작성
[]안에 spread 대상 배열 작성
Array spread 작성 형태
let two = [21,22];
let five = [51,52];
let one = [11,...two,12,...five];
...에 연결하여 array 작성
console.log(one); // 11, 21, 22, 12, 51, 52
String spread
[]안에 spread 대상 문자열 작성
작성한 문자의 문자단위로 배열로 분리
let str = “music”;
let chars = [...str];
오브젝트 함수
오브젝트 함수의 파라미터에 spread 사용
let two = [21,22]; let five = [51,52]; two.push(...five);
- two 와 five에 배열
object spread
const val = {name:123}
function spread - 호출하는 함수의 파라미터에 spead 작성
function get(a,b,c)(){};
const val = [10,20,30];
get(...val);
- get() 파라미터에 spread 사용
- values를 get(10,20,30) 형태로 전개
rest 파라미터
function(param,paramN,...rest)
호출받는 function() 파라미터에 ...과 같이 점3개 작성
...에 이어서 파라미터 이름 작성
하나 이상의 파라미터를 배열로 묶음
get(...rest){}
get(...[1,2,3]);
get(one...rest){}
get(...[1,2,3]); // one=1 , [2,3]
Array-like
Object이지만 이터러블 오브젝트
let one = {0:value, 1: value, length:2};
프로퍼티 key 값이 0부터 순서값
전체 프로퍼티 수를 length에 작성
Object이지만 for() 문으로 전개가능
- 프로퍼티 키 값(0,1)을 인덱스로 사용
argument는 배열이 아님 Array-like로 저장됨
function get(){}
get(1,2,3);
rest, arguments 차이
argument 오브젝트
파라미터에 관계없이 전체 설정
Array-like 이므로 배열 메서드 사용 불가
rest 파라미터
나머지 파라미터 설정
Array 오브젝트이므로 배열메서드 사용