[React.js] React 사용을 위한 자바스크립트 응용 - 비 구조화 할당

2022. 4. 30. 01:23·공부/React.js
반응형

 

React 게시글은 대부분 인프런의 '한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지' 강의를 기반으로 내용을 정리했습니다.

 

 

비 구조화 할당(=구조 분해 할당)

배열과 객체에서 원하는 값을 더 빠르고 쉽게 가져올 수 있는 방법이다. 
한 배열이 있을 때 그 배열의 값을 모두 출력하고 싶을 땐 어떻게 하는 게 좋을까?

let arr =["one", "two", "three"];

let one = arr[0];
let two = arr[1];
let three = arr[2];

console.log(one, two, three); // one two three

위와 같은 방법도 쓸 수야 있겠지만 배열의 요소가 많을 수록 입력해야 할 코드량이 많아진다.

 

let arr =["one", "two", "three"];

let [one, two, three] = arr;

console.log(one, two, three); // one two three

위의 코드를 줄여보았다. 두 번째 코드의 의미는 배열 안에 변수를 선언하고 arr에 있는 index 순서대로 변수가 담긴 배열에 할당한다. 이런 방식은 배열의 기본 변수 비 구조화 할당 혹은 배열의 비 구조화 할당이라 한다. 

반응형

코드를 더 극한으로 줄여보자.

let [one, two, three] = ["one", "two", "three"];

console.log(one, two, three); // one two three

아예 첫 번째 줄에 있던 변수에 배열을 할당하지 않고 선언을해도 위의 코드와 똑같이 동작한다. 이 방법을 배열의 선언 분리 비 구조화 할당이라 한다. 명칭까지는 다 외울 필요 없고 이런 방법으로도 배열을 만질 수 있구나 하면 된다.
만약에 앞부분 배열에 요소가 더 많으면 어떻게 될까? 당연한 말이지만 앞부분의 배열 요소가 더 많아 저장될 값이 없으면 undefined로 출력이 된다. undefined가 보기 싫고, 저장되어야 할 값이 없는 경우에 기본 값을 설정하고 싶으면 다음과 같이 작성하면 된다.

let [one, two, three, four="four"] = ["one", "two", "three"];

console.log(one, two, three, four); // one two three four

 

이런 배열의 비 구조화 할당은 어떤 경우에 사용하면 좋을까?
우리가 흔히 알고 있는 변수의 스왑을 떠올려보자.

let a = 10;
let b = 20;

let temp = 0;

temp = a;
a = b;
b = temp;

console.log(a, b); // 20 10

고작 변수의 값을 서로 바꿀 뿐인데 이렇게 긴 코드가 필요하다. 배열의 비 구조화 할당을 이용하면 이런 스왑 코드를 파격적으로 짧게 만들 수 있다.

 

반응형

 

let a = 10;
let b = 20;

[a, b] = [b, a];
console.log(a, b); // 20 10

 


이번엔 객체의 비 구조화 할당에 대해 알아보자.

let object = { one:"one", two:"two", three:"three"};

let one = object.one;
let two = object.two;
let three = object.three;

console.log(one, two, three); // one two three

제일 쉬운 방법으로 객체의 모든 프로퍼티 값을 가져왔다. 이 코드 역시  배열의 비 구조화 할당과 비슷하게 작성하면 된다.

 

let object = { one:"one", two:"two", three:"three"};

let {one, two, three } = object;
console.log(one, two, three); // one two three

배열의 비 구조화 할당과 비슷하게 생겼다. 그래도 나름 배열과 객체라 차이점이 있는데 배열에서는 index 값으로 요소에 접근하지만 객체는 Key를 이용해서 프로퍼티에 접근한다. 즉 객체에서의 순서는 상관없다.

 

여기서 약간의 문제는 객체는 key 값으로 접근하기 때문에 변수명이 key 값으로 강제되는 면이 있다.

let object = { one:"one", two:"two", three:"three", name:"홍길동"};

let {name:myName, one, two, three } = object;
console.log(myName, one, two, three);

참고로 배열 비 구조화 할당과 마찬가지고 변수에 저장될 값이 없으면 undefined가 출력되며 객체에서도 기본값을 정할 수 있다.

이런 비 구조화 할당은 리액트에서 많이 사용되므로 숙지하는 게 좋다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/React.js' 카테고리의 다른 글
  • [React.js] React 사용을 위한 자바스크립트 응용 - 동기&비동기
  • [React.js] React 사용을 위한 자바스크립트 응용 - Spread 연산자
  • [React.js] React 사용을 위한 자바스크립트 응용 - 조건문 업그레이드
  • [React.js] React 사용을 위한 자바스크립트 응용 - 단락 회로 평가
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    전자정부프레임워크
    기출문제
    인프런
    react
    코딩테스트
    토비의스프링부트
    토이프로젝트
    MSA
    oracle
    QueryDSL
    Java
    스프링부트
    개발자
    프론트엔드
    운영체제
    방통대
    넥사크로
    JPA
    IT
    RESTful
    springboot
    Spring
    SQL
    에러해결
    자바스크립트
    프로그래머스
    SpringBoot를 이용한 RESTful Web Service 개발
    알고리즘
    백준
    egov
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[React.js] React 사용을 위한 자바스크립트 응용 - 비 구조화 할당
상단으로

티스토리툴바