ES6(ECMAScript 6)는 ECMAScript 표준의 가장 최신 버전.
현대적인 코드를 사용하면, 코드가 간결해지고 생산성이 향상된다.
이것이 ES6를 사용해야 하는 이유.
var
은 재정의와 재선언 모두 가능하다.let
은 가변변수로 재정의가 가능하지만 재선언은 불가능하다.const
는 불변변수로 재선언과 재정의 모두 불가능하다.스코프(scope)
: 식별자(ex. 변수명, 함수명, 클래스명 등)의 유효범위//변수 선언
var x = 2;
//재정의
x = 4;
//재선언
var x = 4;
var
의 문제점화살표 함수는 함수 표현식을 보다 단순하고 간결한 작성하는 문법이다.
//기본 함수 형식
let sum = function(a, b){
return a + b;
};
//화살표 함수 형식
let sum = (a, b) => a + b;
모듈을 내보내는 방법으로는 named export와 default export가 있다.
// named export 기본 형식
export { 모듈명1, 모듈명2};
export { 모듈명1, 모듈명2} from 'js 파일 경로';
// default export 기본 형식
export default 모듈명;
import 모듈명 from 'js 파일 경로';
named export
는 한 파일에서 여러 개를 export할 때 사용 가능하다. export한 이름과 동일한 이름으로 import해야 하며, 중괄호에 묶어서 import 해야 한다.
다른 이름으로 import 하려면 as
를 사용하고, 한파일에 있는 클래스나 변수들을 한 번에 import 하려면 * as
를 사용한다.
// named export는 중괄호 포함 import
import { named1, named2 } form './example.js';
// named export에서 as를 사용하여 다른 이름으로 import
import { named1 as myExport, named2 } from './example.js';
// 한파일에 있는 모든 클래스나 변수를 * as를 사용하여 한 번에 import
import * as Hello from './example.js';
default export
는 하나의 파일에서 단 하나의 변수 또는 클래스 등만 export 할 수 있다. 또한 import 할 때 아무 이름으로나 자유롭게 import 가능하며, 중괄호에 묶지 않아도 된다.// default export 는 중괄호 없이 import
import default1 form './example.js'
forEach()와 map()은 반복문을 돌며 배열 안의 요소들을 1대1로 짝지어 주는 역할을 한다.
배열.forEach((요소, 인덱스, 배열) => {return 요소});
map()
: 배열 내의 모든 요소 각각에 대하여 주어진 함수(콜백)를 호출한 결과를 모아 새로운 배열을 반환
배열.map((요소, 인덱스, 배열) => { return 요소 });
하지만 forEach()와 map()은 역할은 같지만, 리턴값의 차이가 있다.
forEach()는 기존의 배열을 변경하는 반면, map()은 결과값으로 새로운 배열을 반환한다.
var arr = [1,2,3,4,5];
//forEach()
var newArr = arr.forEach(function(e, i){
return e;
});
// return -> undefined
// map()
var newArr = arr.map(function(v, i, arr) {
return v + 1;
});
// return -> 2, 3, 4, 5, 6
reduce()
: 배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환
`배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);
result = sum.reduce((prev, curr, i) => {
console.log(prev, curr, i);
return prev + curr;
}, 0);
// 0 1 0
// 1 2 1
// 3 3 2
// 6 4 3
// 10 5 4
result; //15