[JS] 스프레드 문법과 구조분해할당

2023. 1. 14. 22:12· Front-end/JavaScript

 

 

- 리액트 할 때 정말 많이 썼던 자바스크립트 문법

- 잘 이해하고 알아두면 리액트 앱 만들 때 고생을 덜 할수있다.(과거 나에게...)


스프레드 문법 (Spread)

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

const max = Math.max(...arr); // 3
  • es6
  • ...
  • 순회가 가능한(이터러블한) 여러 값들의 집합체를 펼쳐 개별적인 값들의 목록으로 만든다.
  • 값을 생성하는 연산자가 아니기 때문에 변수에 할당할 수 없다.
  • Rest 파라미터와 형태가 동일하지만 전혀 다른 컨셉을 가지고 있다. 
    • Rest 파라미터는 전달된 인수들의 목록을 배열로 전달받기 위해 매개변수 앞에 사용하는 것
  • 기존에 사용했던 concat, splice, slice 메서드를 더 간결하고 가독성있게 사용 가능하다.
 
 

 

- Rest parameters

function foo(...rest) {
    console.log(rest); // [1, 2, 3, 4, 5]
}

foo(1, 2, 3, 4, 5)

 

사용예제

 

1.

const arr1 = [1, 2];
const arr2 = [4, 5];
let arr = arr1.concat(arr2);
console.log(arr); // [1, 2, 4, 5]

arr = [...arr1, 3 ,...arr2]
console.log(arr); // [1, 2, 3, 4, 5]

 

2.

const employee = { name: 'jay', department:FB };
const updated = {
    ...employee,
    position: 'intern', 
};
console.log(updated); // { name: 'jay', department:FB, position: 'intern' }

구조 분해 할당 (Destructuring Assignment)

 

- 배열 디스트럭처링 할당

const arr = [1, 2, 3, 4];
const [one, two, ...nums] = arr;

console.log(one); // 1
console.log(two); // 2
console.log(...nums); // [3, 4]

const arr = [1, 2, 3];
const [one, two, three, four = 4] = arr; //기본값 설정

 

- 객체 디스트럭처링 할당

const user = { firstName: 'jay', lastName: 'lee' };
const { lastName, firstName } = user;

console.log(firstName, lastName); // jay lee
  • es6
  • 배열, 객체를 구조분해하려 변수에 할당하는 것
  • 배열, 객체에서 필요한 값만 변수에 할당할 때 유용하다.
  • 기본값을 설정할 수 있다.
  • 객체의 할당기준은 프로퍼티 키로 순서는 상관없다. 

 

✨ 함수에 객체를 전달하여 분해 

const user = { firstName: 'jay', lastName: 'lee' };
function info({firstName, lastName}){
    console.log('성', lastName);
    console.log('이름', firstName);
}
info(user);

 

참고📌

모던자바스크립트 Deep dive

https://poiemaweb.com/js-array

저작자표시 (새창열림)

'Front-end > JavaScript' 카테고리의 다른 글

[JS] 자바스크립트 라이브러리 - GSAP로 애니메이션 처리하기  (0) 2023.11.15
[JS] 호이스팅(Hoisting) 이란?  (0) 2023.02.13
[JS] 비동기 - callback / Promise / async · await  (1) 2023.01.16
[JS] 고차함수(Higher-Order function , HOF)  (0) 2023.01.13
[JS] for문과 while문의 차이점은?  (0) 2023.01.09
'Front-end/JavaScript' 카테고리의 다른 글
  • [JS] 호이스팅(Hoisting) 이란?
  • [JS] 비동기 - callback / Promise / async · await
  • [JS] 고차함수(Higher-Order function , HOF)
  • [JS] for문과 while문의 차이점은?
개발중인제이
개발중인제이
제이로그개발중인제이 님의 블로그입니다.
개발중인제이
제이로그
개발중인제이
전체
오늘
어제
  • 분류 전체보기 (100)
    • 기록 (6)
      • 회고 (1)
      • TIL (4)
      • 일상 (0)
      • 리뷰 (1)
    • Web (4)
    • Front-end (81)
      • HTML & CSS (4)
      • JavaScript (9)
      • 모던자바스크립트 (14)
      • React (21)
      • Next (6)
      • TypeScript (11)
      • git & github (2)
      • etc (14)
      • 프로젝트 (0)
    • Back-end (0)
    • 알고리즘 & 자료구조 (0)
    • 패스트캠퍼스 (8)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.2
개발중인제이
[JS] 스프레드 문법과 구조분해할당
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.