ES6 ECMAScript 6는 2015년에 도입된 자바스트립트의 표준안으로 이전보다 간결하고 효율적인 코드 작성을 가능하게 하는 새로운 기능과 문법이 추가됨
ES5까지는 var을 이용해서 변수를 선언했다. 이는 다음과 같은 문제를 일으켰다
1. 변수 호이스팅 : 변수 선언하기 전에 참조할 수 있음
- 호이스팅 : var 선언문 처럼 코드의 맨 앞으로 옮겨진 것처럼 동작하는 특성
2. 변수 중복 선언 허용
3. 전역 단위로 호이스팅 : 블록 단위로 동작하지 않음
-> 전역 변수로 인한 문제가 발생해서 ES6부터는let과const키워드를 도입
let msg = 'GLOBAL';
function outer() {
let msg = 'OUTER';
console.log(msg); //outer
if (true) {
let msg = 'BLOCK';
console.log(msg); //block
}
console.log(msg); //outer
}
console.log(msg); //global
outer();
// let msg = 'hi'; //error
console.log(msg); //globallet arr = [10, 20, 30, 40];
let [a1, a2, a3] = arr;let [, a4, a5, a6] = arr; //3개만 할당const zoo = ['panda', 'koala'];
const [an1, an2, an3 = 'monkey'] = zoo;const nestedArray = [1, [2, 3], 4];
const [num1, [numArr1, numArr2], num2] = nestedArray;[a, b] = [b, a];let user = { name: 'alice', age: 20, gender: 'M' };
const { age, name } = user; :을 붙이고 별칭 지정const { name: userName, age: userAge } = user;기본값 설정
const { salary = 5000, age: userAge1 = 30 } = user;
중첩된 객체 구조 분해
const person = {
name: 'bob',
info: {
address: 'seoul',
hobbise: ['reading', 'coding'],
},
};
// Q 구조분해 할당을 통해 이름과 첫번째 취미를 출력하시오
// const { name: name2, info:{address,hobbise} } = person;
const {
name: name2, // 별칭
info: {
address,
hobbise: [firstHobby, secondHobby],
},
} = person;
console.log(`name : ${name2}, 첫번째 취미 : ${firstHobby}`);
const 함수명 = (파라미터) => {}
호출 중인 매서드르 보유한 객체가 this로 연결
bind()변수명(){}으로 선언 가능``로 묶인 문자열에 ${}를 이용해서 바로 할당js 코드를 포함하고 있는 파일
export는 모듈을 외부에 공개하고 import를 이용해서 다른 모듈에서 사용할 수 있게 하여 모듈을 연결할 수 있음
package.json에 type:module을 추가해야함
default export
export default function add(x, y) {
return x + y;
}
async/await
.then 의 연속보다 직관적으로 보임