ES6+ Basic1
์ธํ๋ฐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+ / ์ ์ธ๋
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
์ผ๊ธ ํจ์
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ๊ฐ์ผ๋ก ๋ค๋ฃฐ ์ ์์(์ธ์, ๋ณ์, ๋ฆฌํด๊ฐ ๋ฑ)
์กฐํฉ์ฑ๊ณผ ์ถ์ํ์ ๋๊ตฌ
๊ณ ์ฐจ ํจ์
ํจ์๋ฅผ ๊ฐ์ผ๋ก ๋ค๋ฃจ๋ ํจ์(ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์์ ์คํํ๋ ํจ์)
ํจ์๋ฅผ ๋ง๋ค์ด ๋ฆฌํดํ๋ ํจ์(ํด๋ก์ ๋ฅผ ๋ง๋ค์ด ๋ฆฌํดํ๋ ํจ์)
ES6์ ๋ฆฌ์คํธ ์ํ
๊ธฐ์กด์ for๋ฌธ๊ณผ ๋ฌ๋ผ์ง
for (const a of list){
log(a);
}
๋ด์ฅ ์ดํฐ๋ฌ๋ธ
Array
Set
Map
: ๊ธฐ์กด for๋ฌธ์ผ๋ก ์ํ ๋ถ๊ฐmap.keys()
ํค๋ง ๋ฝ์์คmap.values()
๊ฐ๋ง ๋ฝ์์คmap.entries()
ํค์ ๊ฐ
์ดํฐ๋ฌ๋ธ/์ดํฐ๋ ์ดํฐ ํ๋กํ ์ฝ
์ดํฐ๋ฌ๋ธ์ for..of, ์ ๊ฐ ์ฐ์ฐ์ ๋ฑ๊ณผ ํจ๊ป ๋์ํ๋๋กํ ๊ท์ฝ
์ดํฐ๋ฌ๋ธ : ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฆฌํดํ๋
[Symbol.iterator]()
๋ฅผ ๊ฐ์ง ๊ฐ์ดํฐ๋ ์ดํฐ :
{ value, done }
๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋next()
๋ฅผ ๊ฐ์ง ๊ฐ (์ํ๋ฅผ ํ๋ค๊ฐ done์ด true๊ฐ ๋๋ฉด ๋น ์ ธ๋์ด)
์ฌ์ฉ์ ์ ์ ์ดํฐ๋ฌ๋ธ
const iterable = {
[Symbol.iterator]() {
let i = 3;
return {
next() {
return i == 0 ? { done: true } : { value: i--, done: false }
},
// ์ดํฐ๋ฌ๋ธ์ ์ดํฐ๋ ์ดํฐ๋ก ๋ง๋ ํ์ ์คํํด๋ ์ํ๊ฐ ๋์ด์ผ ํจ
[Symbol.iterator]() { return this; }
}
}
};
let iterator = iterable[Symbol.iterator]();
for (const a of iterable) log(a);
//์ดํฐ๋ ์ดํฐ๊ฐ ์๊ธฐ ์์ ๋ํ ์ดํฐ๋ฌ๋ธ์ด๋ฉด์ ์๊ธฐ ์์ ์์ ๋ฐํํ ๋ ์ ๊ตฌํ๋ ์ดํฐ๋ฌ๋ธ์ด๋ผ๊ณ ํ ์ ์์
๋ด์ฅ ๋์ง ์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ดํฐ๋ฌ๋ธ๋ ์ฌ๋ณผ ์ดํฐ๋ ์ดํฐ๊ฐ ๊ตฌํ๋์ด ์์ผ๋ฉด(์ดํฐ๋ฌ๋ธ/์ดํฐ๋ ์ดํฐ ํ๋กํ ์ฝ์ ๋ฐ๋ฅธ๋ค๋ฉด) ์ํํ ์ ์์
์ ๊ฐ ์ฐ์ฐ์
์ดํฐ๋ฌ๋ธ/์ดํฐ๋ ์ดํฐ ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๊ฐ์ฒด๋ค์ ์ ๊ฐํ ์ ์์
...
์ ๊ฐ ์ฐ์ฐ์
์ ๋๋ ์ดํฐ
์ดํฐ๋ ์ดํฐ์ด์ ์ดํฐ๋ฌ๋ธ์ ์์ฑ(๋ฆฌํด)ํ๋ ํจ์
// ์ผ๋ฐ ํจ์์์ *์ ๋ถ์ฌ์ ๋ง๋ฌ
function *gen() {
yield 1;
if (false) yield 2;
yield 3;
return 100;
//๋ฆฌํด๊ฐ๋ ๋ฐํํ ์ ์์(done์ด true๊ฐ ๋ ๋)
}
for (const a of gen()) log(a);
//odds ์์
function *ifinity(i = 0) {
while (true) yield i++;
}
function *limit(l, iter) {
for (const a of iter) {
yield a;
if (a == l) return;
}
}
function *odds(l) {
for(const a of limit(l, ifinity(1))) {
if (a % 2) yield a;
}
}
๋ฌธ์ฅ์ ์ด์ฉํด ์ํํ ๊ฐ์ ์์ฑํ๋ ์ ๋๋ ์ดํฐ๋ฅผ ์ด์ฉํด ์ด๋ ํ ๊ฐ์ด๋ ์ํํ๋๋ก ๋ง๋ค ์ ์์
๊ตฌ์กฐ ๋ถํด, ๋๋จธ์ง ์ฐ์ฐ์
log(...odds(10));
log([...odds(10), ...odds(20)]);
const [head, ...tail] = odds(5);
log(head);
log(tail);
const [a, b, ...rest] = odds(10);
log(a);
log(b);
log(rest);
220107 ๊ทธ๋ฅ ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋ ์ ๋๋ ์ดํฐ์ ๋์์ ๋ํด ์ด๋์ ๋ ์ดํดํ ์ ์์๋ค. ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ๋ณด๊ณ ์ฐ์ตํด๋ด์ผ๊ฒ ๋ค
Last updated