โ JS ES6 ๋?
"ECMAScript 6"์ ์ฝ์๋ก, ๊ณต์์ ์ผ๋ก๋ ECMAScript 2015๋ก ๋ถ๋ฆผ
ES6๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค์ํ ์ ๋ฐ์ดํธ ์ค ํ๋๋ก, 2015๋ ์ ๋ฐํ๋จ
๋ง์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ ๋์ ํจ
๐ ์ฝ๊ฒ, ์ผ์ข ์ ์ ๋ฐ์ดํธ ๋ฒ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.!
โ let๊ณผ const
๐ let
์ฌํ ๋น | ๋ณ์ ์ฌํ ๋น ๊ฐ๋ฅ |
์ค๋ณต์ ์ธ | ์ค๋ณต ์ ์ธ ๋ถ๊ฐ๋ฅ |
๋ฒ์ | ์ ํจ ๋ฒ์๋ {} ๋ธ๋ก |
๐ const
์ฌํ ๋น | (์์) ์ฌํ ๋น ๋ถ๊ฐ๋ฅ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ด๋ถ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ |
์ค๋ณต์ ์ธ | ์ค๋ณต ์ ์ธ ๋ถ๊ฐ๋ฅ |
๋ฒ์ | ์ ํจ ๋ฒ์๋ {} ๋ธ๋ก |
โ ๋ฐฐ์ด (spread operator (์ ๊ฐ๊ตฌ๋ฌธ))
๋ฐ๋ณต ๊ฐ๋ฅํ (iterable) ์ ์ ์ฉ ๊ฐ๋ฅ ๋ฌธ๋ฒ
๋ฐฐ์ด, ๋ฌธ์์ด ๋ฑ์ ์์ ํ๋ํ๋๋ก ์ ๊ฐ ์ํฌ ์ ์์
const arr = [1,2,3];
console.log(...arr); //num์ ์์๋ค์ ์ถ์ถ
const str1 = 'hello';
const str2 = [...str1];
console.log(str2); // [ "h", "e", "l", "l", "o"]
//๋ฐฐ์ด์์ ์ ๊ฐ๊ตฌ๋ฌธ
//๋ฐฐ์ด์ ์ถ๊ฐ
const num1 = [10, 20, 30, ...arr];
console.log(num1)
//๋ฐฐ์ด์ ์ค๊ฐ์ถ๊ฐ
const num2 = [10, 20, ...arr, 30];
console.log(num2)
//๋ฐฐ์ด์ ๋ณต์ฌ
const num3 = [...arr]; //splice์ ์ ์ฌ(๋ณต์ฌ)
console.log(num3)
//๋ฐฐ์ด ์ฐ๊ฒฐ
const num4 = [...arr, ...arr]
console.log(num4)
๐ (+) default ๋งค๊ฐ๊ฐ :: ํจ์
ํจ์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ์ฌ ์ธ์๊ฐ ์ ๊ณต๋์ง ์์์ ๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๊ฒ ํด์ค
ํจ์ ์ ์ ์ ๋งค๊ฐ๋ณ์์ ์ง์ ํ ๋นํ์ฌ ์ค์
const num = [1,2,3];
//ํจ์์ ์ ๋ฌ
function sum(x, y, z) {
return x + y + z;
}
console.log( sum(...num) ); //num์ ์์๋ฅผ x,y,z๋ก ์ ๋ฌ
console.log( sum(10, ...num) ); //10, 1, 2, 3์ ์ ๋ฌ
//ํจ์์ ๋งค๊ฐ๋ณ์์ ์ฌ์ฉ(๊ฐ๋ณ์ ๋งค๊ฐ๋ณ์) - ๋จ ๋ง์ง๋ง์ ์์ฑํด์ผ ํฉ๋๋ค.
function sum2(x, ...arr) {
return [x, ...arr]; //๋ฆฌ์คํธ ๋ฐํ
}
console.log( sum2("ํ๊ธธ๋", 1) )
console.log( sum2("ํ๊ธธ๋", 1,2) )
console.log( sum2("ํ๊ธธ๋", 1,2,3) )
//ํจ์์ default๋งค๊ฐ๊ฐ
function sum3(x, y = 10, z = 100) {
return x + y + z;
}
console.log( sum3(1) ) //111
console.log( sum3(1, 2) ) //103
console.log( sum3(1, 2, 3) ) //6
console.log( sum3(...[1,2] )) //1,2๋ฅผ ์ถ์ถํด์ ์ ๋ฌ //103
โ Destructuring assignment (๊ตฌ์กฐ ๋ถํด ํ ๋น)
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ฐ์ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋ ๋ฌธ๋ฒ
๐ ๋ฐฐ์ด
let arr = ["ํ๊ธธ๋", "์ด์์ ", "ํ๊ธธ์", "๊น์ฒ ์"];
/* ๊ธฐ์กด์ ๋ฐฉ๋ฒ
let n1 = arr[0];
let n2 = arr[1];
let n3 = arr[2];
let n4 = arr[3];
*/
//์์น์์๋ฅผ ๋ฐํ๋ฐ์์ ํ๋ฒ์ ์ฌ์ฉํ๋ค.
let [a,b,c,d] = arr;
console.log(a,b,c,d)
let [n1, , ,n2] = arr;
console.log(n1, n2)
//์ ๋ถ๋ค ๋ฐํํ๋ค.
let [...x] = arr;
console.log(x);
//๋จ์์๋ ๋ชจ๋ ์์๋ฅผ ๋ฐํํ๋ค.
let [k1, k2, ...all] = arr;
console.log(k1, k2, all)
๐ ๊ฐ์ฒด
let person = {
"name": "๊น์ฒ ์",
"age" : 30,
"job" : ["programmer", "designer"]
}
//nameํค ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
let {name} = person;
console.log(name);
let {name, age, job} = person;
console.log(name, age, job);
//๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
let {name: aaa, age:bbb} = person; //name์ aaa์ด๋ฆ์ผ๋ก ๊ฐ์ ธ์จ๋ค
console.log(aaa, bbb)
๐ JSON ๊ตฌ์กฐ์์ ํฐ ์ญํ ์ ํ๋ค !
โ for of๋ฌธ
- ๊ฐ์ฒด๋ ์ง์ ์ํํ ์ ์๋ค.
- ๋ฐฐ์ด๊ณผ ๊ฐ์ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(iterable)๋ฅผ for๋ฌธ ์์์ ๋ฐ๋ณต์์ผ ์ฐ์๋ ๊ฒฐ๊ณผ๊ฐ ์ป์
- forEach๋ฌธ์์ ์ง์ํ์ง ์๋ break, continue, return์ ์ฌ์ฉ๊ฐ๋ฅ
let arr = ["a", "b", "c"];
//๊ธฐ์กด์ for๋ฌธ
/*
for(let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
for(let i in arr) {
console.log(arr[i]); //i๋ ์ธ๋ฑ์ค๋ฅผ ๋ด์์ค๋ค
}
*/
//๊ธฐ์กด์ foreach๋ฌธ
/*
arr.forEach(function(value, index, arr) {
console.log(value);
console.log(index);
console.log(arr);
})
*/
//es06 - forof๋ฌธ (๋จ list๊ฐ์ ๋ฐ๋ณต๊ฐ๋ฅ ์์์๋ง ์ ์ฉ๋๋ค)
for(let i of arr ) {
console.log(i); //๊ฐ์ ๋ฝ์์ค๋ค.
}
//error
let obj = {name: "g", age: 1};
for(let i of obj) {
console.log(i);
}
โ Backtick
1. ๋ฐฑํฑ `์ ์ฉํด์ ๋ฌธ์์ด์ ํํํ๊ณ , ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ${}๋ฅผ ์ด์ฉํด์ ํ์๊ฐ์ ์ฒ๋ฆฌ
โ Arrow Function (ํ์ดํํจ์)
1. ํ์ดํ ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ต๋ช ํจ์๋ฅผ ๋์ฒดํฉ๋๋ค. (ํธ์ด์คํ ๋ถ๊ฐ)
2. ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
๐ forEach
๐ Filter
- filter ํจ์
- filter( ์ฝ๋ฐฑ (ํ์ฌ๊ฐ,์ธ๋ฑ์ค,ํ์ฌ๋ฐฐ์ด))
๐ Map
โ์๋ฐ์คํฌ๋ฆฝํธ class
์ผ๋ฐHTML์์๋ ๊ตณ์ด class๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
React์ class์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์์๋์ธ์.
React class ์ปดํฌ๋ํธ
โ ์๋ฐ์คํฌ๋ฆฝํธ ์์
- super(); ์๋ต์๋จ
- func ๋๊ฐ์ด ๋ง๋ค์ด์ ์ค๋ฒ๋ผ์ด๋ฉ ๊ฐ๋ฅ
โ module import export
module
- ES6 ์์ ๋ฏธ๋ฆฌ ์์ฑํ ํด๋์ค ํ์ผ
- ๋ณ์,ํจ์,ํด๋์ค ๋ฑ
๋ชจ๋์ ์ธ๋ถ๋ก ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ
- name export ์ฌ๋ฌ๊ฐ
- default export ํ๋์ฉ
html:5 ์์ ์์ธ์ ์ผ๋ก ๋ชจ๋ ๋ฐฉ์ ์ฌ์ฉํ๋ ค๋ฉด
- type=module ์ ์จ์ค์ผํ๋ค.
๐ named export
Named export๋ JavaScript์ ๊ธฐ๋ฅ์ผ๋ก, ๋ชจ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ด๋ณด๋ผ ์ ์๊ฒ ํด์ค๋๋ค. ๊ฐ๋จํ ์ค๋ช ํ๋ฉด:
- Named export๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
- ๋ด๋ณด๋ด๊ณ ์ถ์ ์ ์ธ ์์ 'export' ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์ ธ์ฌ ๋๋ ์ค๊ดํธ {}๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ธ์ค๊ณ ์ถ์ named export๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ๋ชจ๋์์ ํ์ํ ํจ์๋ ๊ฐ๋ง ์ ํ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ๋ณ์นญ ์ค์ ํด์ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ๋ฅ
๐ export default
export default๋ ๋ชจ๋์์ ๋จ ํ๋์ ๊ฐ๋ง์ ๋ด๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค. ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์ผ ๋น ํ๋์ export default๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ฆ ์์ด ๊ฐ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
- importํ ๋ ์ค๊ดํธ {} ์์ด ์ํ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ํ์ผ ์ ์ฒด์์ ๋จ ํ๊ฐ๋ง ๋ด๋ณด๋ผ๋
- ํ์ผ์ ๋ํํ๋ ๊ตฌ๋ฌธ์ ํ๋ ๋ด๋ณด๋
- Class๋ ํจ์๋ฅผ ๋ด๋ณด๋ผ๋๋ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ด์ง ์๋๋ก ๊ถ์ ๋ฉ๋๋ค.