[TIL๐Ÿ”ฅ]Day6(8/9)

๊น€๋‹ค์Šฌยท2021๋…„ 8์›” 9์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
6/22

Introduction

์ €๋ฒˆ์ฃผ ๋ชฉ์š”์ผ๋ถ€ํ„ฐ ์ฃผ๋ง๋™์•ˆ ๊ณผ์ œ๋ฅผ ํ•˜๊ณ  ๋“œ๋””์–ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ผ๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ๋ฐ›์•„๋ดค๋‹ค.
์•„์ง ๋‚˜์˜ ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ๊ณ ์ณ์•ผํ•  ์ ๋“ค์ด ๋งค์šฐ ๋งŽ์ง€๋งŒ, ๋ฉ˜ํ† ๋‹˜๊ณผ ํŒ€์›๋“ค์˜ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ฐ์‚ฌํ•˜๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ ์ฃผ๋ง์— ๊ฐ•์˜๋ฅผ ๋“ค์€ ๋•๋ถ„์— ์˜ค๋Š˜ ๊ฐ•์˜๋Š” ์™„๊ฐ•ํ–ˆ๋‹ค...
์™„๊ฐ•ํ–ˆ๋‹ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ด๋ ‡๊ฒŒ ๊ธฐ์˜๋‹ค๋‹ˆ...๐Ÿ˜†
๊ณผ์ œ๋„ ์ผ์ฐ ์˜คํ”ˆํ•ด์ฃผ์…”์„œ ์˜ค๋Š˜๋ถ€ํ„ฐ ์ฒœ์ฒœํžˆ ๊ณ ๋ฏผํ•ด๋ด์•ผ๊ฒ ๋‹ค!!


์˜ค๋Š˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๊ฒƒ

์ด๋ฒˆ์ฃผ๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ๋ฐฐ์šด๋‹ค.
๊ฐ•์‚ฌ๋‹˜์ด ๋ฐ”๋€Œ์…จ๋Š”๋ฐ ์ด๋ฒˆ์ฃผ๋„ ์—ญ์‹œ๋‚˜ ์„ค๋ช…์„ ์ž˜ํ•ด์ฃผ์…”์„œ ์ดํ•ด๊ฐ€ ์™์™๋œ๋‹ค.

1. DOM
2. ํ‰๊ฐ€์™€ ์ผ๊ธ‰
3. ์ดํ„ฐ๋Ÿฌ๋ธ”/์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ
4. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ


์˜ค๋Š˜์€ ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ ์ดํ„ฐ๋Ÿฌ๋ธ”/์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค.

๐Ÿ”Ž ์ดํ„ฐ๋Ÿฌ๋ธ”/์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ

์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋ž€?

  • ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” [Symbol.iterator]() ๋ฅผ ๊ฐ€์ง„ ๊ฐ’

์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ž€?

  • {value, done} ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” next()๋ฅผ ๊ฐ€์ง„ ๊ฐ’

์ดํ„ฐ๋Ÿฌ๋ธ”/์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ

  • ์ดํ„ฐ๋Ÿฌ๋ธ”์„ for...of, ์ „๊ฐœ ์—ฐ์‚ฐ์ž ๋“ฑ๊ณผ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋„๋กํ•œ ๊ทœ์•ฝ

์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๊ธฐ

// ์‚ฌ์šฉ์ž ์ •์˜ ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ํ†ตํ•ด ์•Œ์•„๋ณด๊ธฐ
const iterable = {
	 // Symbol.iterator๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์—, for...of ๋™์ž‘ ๊ฐ€๋Šฅ
   [Symbol.iterator](){
			let i = 3;
      // iterator ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
      return {
            // iterator๋Š” {value, done}์„ ๋ฆฌํ„ด
            next(){
                return i === 0 ? { done: true } : { value: i--, done: false };
            },
            // wellformed ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€
            [Symbol.iterator]() {return this}
        }
    }
};

let iterator = iterable[Symbol.iterator]();
for (const a of iterable) log(a); // 3 2 1
// wellformed ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ ํ›„ ์•„๋ž˜ ์ฝ”๋“œ๋„ ๋™์ž‘
iterator.next();
for (const a of iterator) log(a); // 2 1

// wellformed ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ผ๋ฉด, ์ดํ„ฐ๋ ˆ์ดํ„ฐ ์—ญ์‹œ ์ดํ„ฐ๋Ÿฌ๋ธ” ํ•ด์•ผํ•จ
const arr2 = [1, 2, 3];
let iter = arr2[Symbol.iterator]();
iter.next();
// ์ž๊ธฐ ์ž์‹ ์„ ๋ฐ˜ํ™˜
log(iter[Symbol.iterator]() === iter) // true
for (const a of iter) log(a); // 2 3

Comment

๊ฐ•์˜๋„ ๋งŽ๊ณ  ๊ณผ์ œ๋„ ๋งŽ์€ ๋นก์„ผ ์ปค๋ฆฌํ˜๋Ÿผ์ด์ง€๋งŒ, ํ•˜๋ฃจ ํ•˜๋ฃจ ์ง€์‹์„ ์Œ“์•„๊ฐ€๋Š” ๋Š๋‚Œ์ด ์ข‹๊ณ  ํ•˜๋ฃจ๋ฅผ ์•Œ์ฐจ๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด ๊ธฐ์˜๋‹ค.
๋ฐ๋ธŒ์ฝ”์Šค์— ๋ถ™์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด, ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ฐˆํ”ผ๋ฅผ ์žก์ง€ ๋ชปํ–ˆ์„ํ…๋ฐ ์ƒˆ์‚ผ ๋ฆฌ์•„ ๋งค๋‹ˆ์ €๋‹˜๊ป˜ ๊ฐ์‚ฌํ•˜๋‹ค~~๐Ÿ’›
5๊ฐœ์›”๊ฐ„ ์ตœ์„ ์„ ๋‹คํ•ด ๋ชฐ์ž…ํ•˜์ž๋Š” ๋‹ค์ง์„ ๋˜ ํ•ด๋ณธ๋‹ค!

profile
์ธ์ƒ์€ ์šฉ๊ธฐ์˜ ์–‘์— ๋”ฐ๋ผ ์ค„์–ด๋“ค๊ฑฐ๋‚˜, ๋Š˜์–ด๋‚œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€