ECMAScript란 ECMA라는 기관이 만든 script언어라고 한다.
참고)ECMA기관이란?
그래서 ES는 자바스크립트의 표준규격을 의미한다. 그리고 ES뒤의 숫자는 자바스크립트의 기능을 추가하거나 변경점이 있다는 버전을 의미한다.
ES6는 2015년에 발표되었는데 그 당시 추가된 기능이나 개념이 매우 중요하기 때문에 꼭 알아야한다!
- 템플릿 리터럴(Template Literals)
- 화살표함수
- let과 const
- 기본 매개 변수(Default Parameters)
- 비구조화 할당(구조 분해 할당)
- 스프레드 연산자(Spread Operator)
- 모듈(Modules)
- for...of 문
- 프로미스(Promise)
- 클래스(Classes)
ES6 이전에는 문자열을 입력할 때는 아래와 같이 입력했어야 했다.
const first = '철수';
const last = '김';
const name = 'My name is ' + last + ' ' + first;
띄어쓰기를 하려면 ' '를 적어줘야 하는등 번거로웠지만 템플릿 리터럴의 등장으로 백틱( ` )을 이용하여 아래의 코드처럼 간단하게 처리가 되었다.
const name = `My name is ${last} ${first}`
화살표함수는 함수(function)를 간단하게 만들 수 있는 방식이다. 그리고 return 키워드 없이도 식을 계산한 값이 반환된다.
함수 선언식
function sum(a,b) {
return a+b;
}
화살표함수로 변환
const sum = (a,b) => a+b;
let은 중복 선언 불가능, 재할당이 가능하다.
const는 중복 선언 불가능, 재할당도 불가능하다.
const aaa = '철수';
const aaa = '짱구'; // 중복선언 불가능
aaa = '훈이'; // 재할당 불가능
------------------------------------------
let bbb = '미영';
let bbb = '미진'; // 중복선언 불가능
bbb = '맹구'; // 재할당 가능
기본 매개 변수는 함수에 인자를 넘길 때, 기본값을 설정할 수 있다.
function sum(a,b=2) {
return a+b;
}
sum(1) // 3
위 와같이 sum이라는 함수의 b라는 매개변수에 2라는 기본값을 설정해놓으면 sum(1)과 같이 a의 인자만 넘겨도 기본값이 있기 때문에 1+2로 계산되어 3이라는 결과값이 반환된다.
비구조화 할당은 객체와 배열에서 속성 혹은 값을 분해하여 분해한 값을 변수에 각각 담아 사용하는 문법이다.
객체
const obj = {
a : 'cat',
b : 'dog',
c : 'bird'
}
const { a, b, c } = obj;
console.log(a); // 'cat'
console.log(b); // 'dog'
console.log(c); // 'bird'
배열
const arr = [ 'cat', 'dog', 'bird' ];
const [ q, w, e ] = arr;
console.log(q); // 'cat'
console.log(w); // 'dog'
console.log(e); // 'bird'
스프레드 연산자는 객체나 배열의 값을 하나 하나 옮기거나 복사할 때 사용한다.
배열
const arr = ['철수', '짱구', '훈이'];
console.log(...arr); // '철수' '짱구' '훈이'
객체
const obj = {
a : '철수',
b : '짱구',
c : '훈이'
}
const obj2 = {
... obj,
d: '맹구'
}
console.log(obj2); // {a: '철수', b: '짱구', c: '훈이', d: '맹구'}
ES6 이전에는 모듈에 대한 표준이 없었고 require를 통해 다른 파일의 코드를 불러오거나 외부 라이브러리를 불러 왔다. 하지만 ES6에서 import로 불러오고 export로 내보낼 수 있다.
먼저 import를 이용하기 전에 package.json에서 "type": "module"을 적어줘야 한다.
// Node.js의 프레임워크인 express를 import 해오는 방법
import express from "express";
for..of 문은 반복가능한 객체(Array,Map,String,Set 등등.....)들을 반복하는 문법이다.
const arr = [1,2,3,4,5]
for(let x of arr) {
console.log(x)
}
// 1
// 2
// 3
// 4
// 5
프로미ㅣ스는 자바스크립트의 비동기 처리에 사용되는 개체이다.
그리고 프로미스는 성공하면 then()의 코드를, 실패하면 catch()의 코드를 실행하는 함수이다.
const promises = new Promise(); // 프로미스 사용
promises.then( ()=> {
// 프로미스가 성공했을 때의 코드1
}).then( ()=> {
// 프로미스가 성공했을 때의 코드2
}).catch( ()=> {
// 프로미스가 실패했을 때의 코드
})
그리고 Promise에는 세가지의 상태가 있는데
Pending(대기) : 비동기 처리 결과 기다리는 중
Fulfilled(이행) : 비동기 처리가 정상적으로 끝났고 결과값을 가지고 있다.
Rejected(거부) : 비동기 처리가 비정상적으로 끝났음
클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해서 변수와 메소드를 정의 하는 일종의 틀이다.
클래스(Class) 선언
class 클래스이름 {
constructor() {
this.속성명 = 값;
}
메서드이름() {
}
}
const 이름 = new 클래스이름()
//
new 클래스이름() : new 연산자와 생성자 함수를 사용해서 새로운 객체를 생성해서 변수에 저장하였다.
메서드이름() {} : 클래스 안에서 메서드(함수)를 만들 수 있다.
constructor : new에 의해 자동으로 호출된다.
참고한 사이트
https://share-factory.tistory.com/19
https://ngio.co.kr/10309
https://benggri.tistory.com/52
https://ingryong.tistory.com/entry/JavaScript-ES6-%ED%94%84%EB%A1%9C%EB%AF%B8%EC%8A%A4Promise
https://ossam5.tistory.com/160