[ 모던 자바스크립트 스터디 ] 스프레드 문법

2022. 10. 25. 12:55·Archive/Develop
728x90
반응형

스프레드 문법 ... 은 ES6에서 도입되었고,

하나로 뭉쳐있는 여러 값들의 집합을 펼쳐 개별적인 값들의 목록으로 만든다.

 

스프레드 문법은 이터러블들만(Array, String, Map, ... ) 사용 가능하다.

 

console.log(...[1, 2, 3]); // 1 2 3

console.log(...'Hello'); // H e l l o

 

스프레드 문법의 결과는 값이 아니고 값들의 목록이다.

따라서 아래와 같이 변수에 할당할 수 없다는 것을 알아둬야한다.

 

const list = ...[1, 2, 3]; // SyntaxError: Unexpected token ...

 

함수 호출문의 인수 목록에서 사용하는 경우

 

const arr = [1, 2, 3];

const max = Math.max(arr); // NaN
Math.max(1, 2); // 2
Math.max(1, 2, 3); // 3

Math.max(...arr); // 3

 

 

Rest 파라미터와 혼동할 수 있으나,

Rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 받기 위한 개념이라는 것을 알아두면 되겠다.

 

둘이 반대되는 개념이다.

 

 

 

배열 리터럴 내부에서 사용하는 경우

 

concat

 

2개의 배열을 1개의 배열로 합치고 싶을 때는 concat 메서드를 사용해야했었는데,

스프레드 문법이 이를 해결했다.

 

// ES5
var arr = [1, 2].concat([3, 4]);
console.log(arr); // [1, 2, 3, 4]


// ES6
const arr2 = [..[1, 2], ...[3, 4]];
console.log(arr2); // [1, 2, 3, 4]

 

 

객체 리터럴 내부에서 사용하는 경우

 

스프레드 문법의 대상은 이터러블이어야 하지만, 스프레드 프로퍼티 제안은

일반 객체를 대상으로도 스프레드 문법을 사용할 수 있게끔 한다.

 

const obj = {x: 1, y:2};
const copy = {...obj}

 

스프레드 프로퍼티가 제안되기 이전에는 ES6 에서 도입된 Object.assign 메서드를 사용해

여러 개의 객체를 병합했다.

 

책에서 마침 이 부분을 언급해준 덕분에, 현재 내가 개발하고 있는 소스에서 사용되는

Object.assign 을 제거하고 좀 더 보기 좋게 스프레드 문법을 적용했다.

직접적으로 활용되니 짜릿합니다,,,

 

const merged = { ...{x: 1, y: 2} , ...{y: 10, z: 3}};
console.log(merged); // {x:1, y: 10, z:3}
728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ 모던 자바스크립트 스터디 ] 디스트럭처링 할당  (0) 2022.10.29
[ Nest.js 메모리 누수 ] 내 메모리, 누가 자꾸 훔쳐먹어요  (0) 2022.10.25
[ 모던 자바스크립트 스터디 ] Symbol  (0) 2022.10.22
[ 모던 자바스크립트 스터디 ] String  (0) 2022.10.22
[ 모던 자바스크립트 스터디 ] 자주 사용하는 정규표현식 (아이디 사용가능, 이메일 정규표현식, 핸드폰 번호, 특수문자 표함여부)  (0) 2022.10.22
'Archive/Develop' 카테고리의 다른 글
  • [ 모던 자바스크립트 스터디 ] 디스트럭처링 할당
  • [ Nest.js 메모리 누수 ] 내 메모리, 누가 자꾸 훔쳐먹어요
  • [ 모던 자바스크립트 스터디 ] Symbol
  • [ 모던 자바스크립트 스터디 ] String
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    자바스크립트 API
    코드업 기초
    Codeup
    Oracle
    장고
    백준 문제풀이
    자바스크립트
    오라클
    파이썬 기초 문제
    파이썬 알고리즘
    Django
    Python
    코드업 파이썬 기초 100제
    oracle db
    docker
    파이썬 백준
    백준
    보안뉴스
    파이썬 문제
    javascript
    백준 파이썬
    카카오 100일 프로젝트
    백준 풀이
    파이썬 기초
    Git
    파이썬
    코드업
    자바스크립트 객체
    C++
    비박스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ 모던 자바스크립트 스터디 ] 스프레드 문법
상단으로

티스토리툴바