ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ES6(2015), ES11(2020)
    컴퓨터/JavaScript_typescript 2019. 8. 22. 22:38

    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

    댓글

Designed by Tistory.