freddy
느낌으로 남지않기
freddy
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • HTML (2)
    • CSS (1)
    • JavaScript (8)
    • WebGL (0)
    • 개념정리 (0)
    • React (2)
    • ReactNative (4)
    • ERROR.LOG (3)
    • 설치 (2)
    • 챌린지 (0)
    • 책 (0)
    • 세미나 (2)
    • 일기장 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프론트엔드
  • javascript 이벤트 위임
  • 값식문
  • evnet 위임
  • react
  • bitnami ubuntu
  • javascript30
  • react 기초
  • Destructuring assignment
  • css variables
  • react 특징
  • 리액트의 필요성
  • Shorthand property names
  • es11
  • Spread syntax
  • React-Native
  • Github Actions
  • react 사용하는 이유
  • javascript 최신문법
  • 앱이 계속 중지됨
  • React Native
  • javscript 기초
  • JavaScript
  • em과rem차이
  • Optional chainning
  • BOM 이란?
  • Nullish coalescing operator
  • JS
  • 최신JS문법
  • 브라우저 동작 원리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
freddy

느낌으로 남지않기

JavaScript

꼭! 알아야하는 JavaScript 최신문법 (ES6, ES11) 사용법 정리 (1)

2020. 12. 22. 10:53
반응형

이번 포스팅에서는 자주 쓰이는 JS 최신 문법 사용법에 대해 알아보겠습니다.

다음 포스트 자주쓰는 ES11 문법 사용법 정리(2)

~ES6 2015

  • Shorthand property names
  • Destructuring assignment
  • Spread syntax
  • Default parameters
  • Ternary Operator
  • Template Literals

1. Shorthand property names

const person = {
  name: 'dev_min',
  age: '19',
}  

javascript 에서 object는 항상 key와 value로 이루어져 있습니다.

const name = 'dev_min';
const age = '19';

const person1 = {
  name: name,
  age: age,
}

perseon1 객체에서 name, age는 위에서 const 로 선언한 name, age 변수를 참조한 벨류 값 일 것입니다.

이렇게 key 와 value 가 동일하다면 축약형으로 사용할 수 있습니다.

const name = 'dev_min';
const age = '19';

const person2 = {
  name,
  age
}

2. Destructuring assignment

const student = {
  name: 'Anna',
  level: 3,
}

console.log(student.name, student.level);

Object의 Key와value에 접근하기 위해서는 연결 연산자를 이용하여 객체의 key와 value에 접근을 하였는데요

student.name, student.level

Destructuring assignment을 이용하면 편리하게 Object에서 꺼내서 사용할 수 있습니다.

const { name, level } = student;
console.log(name, level); 

사용 방법은 할당연산자(=) 오른편에는 사용하는 Object를 적어주고 왼편에는 꺼내서 사용할 key의 이름을 {} 안에 적어주게 되면 student의 key와 value들이 각각 name과 level에 맞게 할당이 됩니다.

추가로 객체의 original Name이 아닌 새로운 이름을 사용하고 싶은경우는 아래의 코드처럼

const { name: studentName, level: studentLevel } = student;
console.log(studentName, studentLevel); 

key 옆에 콜론(:)을 붙인 뒤 새로운 name을 적어서 사용하시면 됩니다.

이것은 객체에서 뿐만 아니라 배열에서도 사용이 가능합니다.

// array
const ['apple', 'banana'] = fruits;


// 기존 코드  
{  
  const apple = fruits[0];
  const bananna = fruits[1];

  console.log(apple, banana);

}

// Destructuring assignment
{  
  const [apple, banana] = fruits;
  console.log(apple, banana);
}

Point! Object를 Destructuring 할 때는 {} 를 사용하고 Array를 할 때는 []를 사용합니다.

3. Spread syntax

const obj1 = { key: 'key1' };
const obj2 = { key: 'key2' };
const array = [obj1, obj2];

// array copy
const arrayCopy = [...array];

Spread syntax(...) 는 array에 들어있는 아이템들 하나하나씩을 각각 낱개로 가져와서 복사해 오는 것 을 의미합니다.

배열을 복사하면서 복사한 배열에 아이템을 추가하고 싶다면? 가능합니다.

 // array copy
const arrayCopy = [...array, { key: 'obj3' }];

console.log(arrayCopy);

Spread syntax를 사용한 다음에 추가할 아이템을 작성해주면 됩니다.

주의할 점! Spread syntax는 해당 객체의 값을 복사하는 게 아닌 주소 값을 참조하기 때문에 객체의 값을 수정하게 되면 참조하던 객체의 값도 변하기 때문에 이점 유의해서 코딩하시기 바랍니다

Spread syntax 는 array 뿐만 아니라 object에서도 사용 가능합니다

const obj3 = { ...obj1 };
console.log(obj3);

차이점은 array에서는 [...items] 배열의 괄호를 이용하고 , object는 {... items} object의 괄호를 이용해서 하시면 됩니다.
한 가지 참고하실 점은 object의 key가 동일한 경우 뒤에 있는 key가 앞에 있는 key를 덮습니다.

const obj1 = { animal: '개' };
const obj2 = { animal: '고양이' };
const obj3 = {...obj1, obj2};

console.log(obj3); // 결과: {animal: '고양이'}

4.Default parameters

function printMessage(message) {
  if (message == null) {
    message = 'default message';
  }

  console.log(message);
}

printMessage('hello'); // hello
printMessage(); // default message

기존에는 파라미터로 전달받은 값이 null, undefinded 라면 분기문을 통해 기본값을 할당해주었습니다.
이제 Default parameters를 이용하면 간단하게 작성이 가능합니다.

function printMessage(message = 'default message') {
  console.log(message);
}

printMessage('hello'); // hello
printMessage(); // default message

인자 다음에 초기값을 지정하면 됩니다 인자가 전달될 때는 인자의 값을 사용하고 인자가 전달되지 않는다면 설정해 둔
default parameter 값을 이용하게 됩니다.

5.Ternary Operator

const isCat = true;

// 기존
{
  let component;  
  if (isCat) {
    component = 'cat';
  } else {
       component = 'dog'; 
  }

  console.log(component);
}


// Ternary Operator
{
  const component = isCat ? 'cat' : 'dog';
  console.log(component);
  console.log(isCat ? 'cat' : 'dog');    
}

저는 간단한 조건문 같은 경우 자주 사용하는 편 입니다.

6.Template Literals

const pageNumber = 1;
const pageSize = 10;

// 기존
console.log('현재 페이지 번호는: ' + pageNumber +  ' 이고 페이지 사이즈는: ' + pageSize + '입니다.');

// Template Literals
console.log(`현재 페이지 번호는: ${pageNumber} 이고 페이지 사이지는: ${pageSize} 입니다.`);

편리함과 가독성이 좋아 Template Literals 사용하는 것을 추천드립니다.

지금 까지 ES6 최신 문법에 대해서 알아봤는데요 다음 포스터는 ES11 최신 문법으로 뵙겠습니다.

오타나 틀린 내용이 있다면 댓글로 공유해주시면 감사합니다😊

반응형

'JavaScript' 카테고리의 다른 글

JS 이벤트 위임  (0) 2020.12.22
꼭! 알아야하는 JavaScript 최신문법 (ES6, ES11) 사용법 정리 (2)  (0) 2020.12.22
JavaScript 30 Drum Kit 정리  (0) 2020.12.22
CSS Variables  (0) 2020.12.22
CSS + JS Clock 정리  (0) 2020.12.22
    'JavaScript' 카테고리의 다른 글
    • JS 이벤트 위임
    • 꼭! 알아야하는 JavaScript 최신문법 (ES6, ES11) 사용법 정리 (2)
    • JavaScript 30 Drum Kit 정리
    • CSS Variables
    freddy
    freddy

    티스토리툴바