컴퓨터/JavaScript_typescript

ES6(2015), ES11(2020)

수제녹차 2019. 8. 22. 22:38
728x90
반응형

ES6 === ES2015

ES11 === ES2020

[ ES6 ]

1) 개선된 JavaScript 문법

2) ES6 browser compatibility의 훌륭한 지원

3) ES6를 기반으로 한 JavaScript 생태계의 확산

바벨을 이용해서 ES6 코드를 ES5코드로 변환시킬 수 있다 -> 이를 통해 mobile 앱 지원 가능

 

1) shorthand property names

object는 key와 value로 구성되어 있다.

key와 value의 이름이 동일한 경우, 축약해서 작성 가능

const name = 'Ellie';
const age = '18';

const ellie = {
  name,
  age
}

 

2) Destructuring Assignment

const {name, level} = student;
// 새로운 이름으로 선언할 수도 있다
const {name:studentName, level:studentLevel} = student;

// 배열은 index 사용없이 순서대로 할당 가능
const [first, second] = animals;

 

3) spread syntax

각각의 요소를 복사할 수 있다

object가 가리키고 있는 주소의 참조값만 복사한다!!

따라서 원래의 object가 바뀌면 모두 영향받는다

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

const arrayCopy = [...array];
console.log(array, arrayCopy);
arrayCopy[0] = '123';
console.log(array,arrayCopy);

const arrayCopy2 = [...array, {key:'key3'}];

obj를 가리키고 있는 변수는 obj가 담겨있는 메모리의 주소를 가지고 있다.

복사된 것은 주소값일 뿐. 실제로는 모두 동일한 obj를 가리키고 있다.

obj1.key = 'newKey'로 바꾸면 array, arrayCopy, arrayCopy2 모두 값이 바뀐다.

 

object merge

const dog1 = {dog:'1'};
const dog2 = {dog:'2'};
const dog = {...dog1, ...dog2};
console.log(dog); // {dog:'2'} : 제일 뒤에 있는게 앞을 덮어씌운다

 

4) default parameters

function printMessage(message = 'default message') {}

 

5) Ternary Operator

const component = isCat ? 'cat' : 'dog';

 

6) Template literals

문자열 만들 때 '+' 이용하면 불편하다

`Today's weather is ${weather}.`

 

7) Optional Chaining(ES11)

const person1 = {
  name:'Ellie',
  job: {
    title:'S/W Engineer',
    manager: {
      name:'Bpb'
    }
  }
};

const person2 = {
  name:'Bob'
}

function printManager(person) {
  console.log(
    person.job
      ? person.job.manager
        ? person.job.manager.name
        : undefined
      :undefined
  )
}
// 코드가 반복적으로 중복된다
console.log(person.job && person.job.manager && person.job.manager.name)
// optional chaining
console.log(person.job?.manager?.name)

 

8) Nullish Coalescing Operator

( 비교 ) logical or operator

// logical or operator
// false : false,'',0,null,undefined
const username = name || 'Guest'; // false일 때만 뒤가 실행

||를 사용하면 빈 string이거나 0일 때도 false로 인식해서 뒤의 값이 할당된다.

사용자가 일부러 넣은 빈 string이나 0을 넣었을 수도 있는데!

명확하게 null이랑 undefined일 때 출력하고 싶다면

const name = '';
const username = name ?? 'Guest';
console.log(username) // ''
const num = 0;
const message = num ?? 'undefined';
console.log(message) // 0

 

출처 : 모던 자바스크립트 개발을 위한 ES6강좌(inflearn)

dream coding ellie, www.youtube.com/watch?v=36HrZHzPeuY

반응형