-
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
'컴퓨터 > JavaScript_typescript' 카테고리의 다른 글
[javascript] recursion, element.matches(selectorString), ~.함수이름 == -1이면 쓸 수 없는 함수인 것 (0) 2020.01.13 API(Application Programming Interface) (0) 2020.01.07 메서드 (0) 2020.01.03 javascript 함수 3 (0) 2019.11.18 [JavaScript] Template literal (0) 2019.08.25