1. 스프레드 문법이란 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만드는 것.
값을 만드는게 아니기 때문에 변수에 할당할 수 없다.
따라서 단독으로 사용될 수 없고 다음과 같이 사용될 수 있다.
함수 호출문의 인수 목록
배열 리터럴의 요소 목록
객체 리터럴의 프로퍼티 목록 (최신 버전)
이터러블에 한정되어 사용될 수 있다.
2. 함수 호출문의 인수 목록에서 사용하는 경우 spread.js 1 2 3 4 5 const arr = [1 , 2 , 3 ];const minValue = Math .min(...arr);console .log(minValue);
주의 : Rest파라미터와는 다르다. Rest 파라미터는 여러개의 값을 동시에 받기 위해 사용한다.
restParam.js 1 2 3 4 5 6 7 function cook (param, ...rest ) { console .log(param); console .log(rest); } cook(...["면" , "계란" , "스프" ]);
3. 배열 리터럴 내부에서 사용하는 경우 3.1 concat concat & spread 1 2 3 4 5 var arr = [1 , 2 ].concat([3 , 4 ]);console .log(arr); const arrS = [...arr, 5 , 6 ];console .log(arrS);
3.2 push push & spread 1 2 3 4 5 6 7 8 9 10 var arr1 = [1 , 2 ];var arr2 = [3 , 4 ];const arr3 = [5 , 6 ];Array .prototype.push.apply(arr1, arr2); console .log(arr1); arr1.push(...arr3); console .log(arr1);
3.3 splice splice & spread 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var arr1 = [1 , 4 ];var arr2 = [2 , 3 ];Array .prototype.splice.apply(arr1, [1 , 0 ].concat(arr2));console .log(arr1); const arr1 = [1 , 4 ];const arr2 = [2 , 3 ];arr1.splice(1 , 0 , ...arr2); console .log(arr1);
3.4 slice (배열 복사) slice & spread 1 2 3 4 5 6 7 8 9 10 11 var origin = ["면" , "스프" ];var copy = origin.slice();console .log(copy); console .log(copy === origin); const origin2 = ["면" , "멸치육수" ];const copy2 = [...origin2];console .log(copy2);
3.5 유사 배열 객체를 배열로 변환 Array-like object to Array 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function isRamen ( ) { var args = Array .prototype.slice.apply(arguments ); return args.some((item ) => item === "스프" ); } console .log(isRamen("면" , "계란" , "스프" )); function isRamen2 ( ) { var args = [...arguments]; return args.some((item ) => item === "스프" ); } console .log(isRamen2("면" , "계란" , "스프" ));
4. 객체 리터럴 내부에서 사용하는 경우 Object.assign & spread 1 2 3 4 5 6 const merged = Object .assign({}, { x : 1 , y : 2 }, { y : 10 , z : 3 });console .log(merged); const merged2 = { ...{ x : 1 , y : 2 }, ...{ y : 10 , z : 3 } };console .log(merged2);
참고자료: poiemaweb.com
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !