μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- λΈλ‘κ·Έ
- history api
- useEffect
- CSS
- νλ‘ νΈμλ
- fetch API
- νλ‘κ·Έλλ¨Έμ€
- μ½λ©ν μ€νΈ
- λ°λΈμ½μ€
- Props
- λ°λΈμ½μ€3κΈ°
- REACT
- useRef
- position
- μκ³ λ¦¬μ¦
- float
- μλ°μ€ν¬λ¦½νΈ
- Flex
- Gatsby
- Today
- Total
Daehyunii's Dev-blog
34μ₯ μ΄ν°λ¬λΈ λ³Έλ¬Έ
34μ₯ μ΄ν°λ¬λΈ
Daehyunii 2022. 7. 27. 23:1334.1 μ΄ν°λ μ΄μ νλ‘ν μ½
ES6μμ λμ λ μ΄ν°λ μ΄μ νλ‘ν μ½μ μν κ°λ₯ν λ°μ΄ν° 컬λ μ μ¦ μλ£κ΅¬μ‘°λ₯Ό λ§λ€κΈ° μν΄ ECMAscript μ¬μμ μ μνμ¬ λ―Έλ¦¬ μ½μν κ·μΉμ΄λ€. ES6 μ΄μ μ μν κ°λ₯ν λ°μ΄ν° 컬λ μ , μ¦ λ°°μ΄, λ¬Έμμ΄, μ μ¬ λ°°μ΄ κ°μ²΄, DOM 컬λ μ λ±μ ν΅μΌλ κ·μ½ μμ΄ κ°μ λλ¦μ ꡬ쑰λ₯Ό κ°μ§κ³ forλ¬Έ, for...inλ¬Έ, forEach λ©μλ λ± λ€μν λ°©λ²μΌλ‘ μνν μ μμλ€. νμ§λ§ μ΄μ λ μν κ°λ₯ν λ°μ΄ν° 컬λ μ μ μ΄ν°λ μ΄μ νλ‘ν μ½μ μ€μνλ μ΄ν°λ¬λΈλ‘ ν΅μΌνμ¬ for...of λ¬Έ, μ€νλ λ λ¬Έλ², λ°°μ΄ λμ€νΈλμ²λ§ ν λΉμ λμμΌλ‘ μ¬μ©ν μ μλλ‘ μΌμννλ€. μ΄ν°λ μ΄μ νλ‘ν μ½μλ μ΄ν°λ¬λΈ νλ‘ν μ½κ³Ό μ΄ν°λ μ΄ν° νλ‘ν μ½μ΄ μλ€.
34.1.1 μ΄ν°λ¬λΈ
μ΄ν°λ¬λΈ νλ‘ν μ½μ μ€μν κ°μ²΄λ₯Ό μ΄ν°λ¬λΈμ΄λΌ νλ€. μ¦ μ΄ν°λ¬λΈμ Symbol.iteratorλ₯Ό νλ‘νΌν€ ν€λ‘ μ¬μ©ν λ©μλλ₯Ό μ§μ ꡬννκ±°λ νλ‘ν νμ 체μΈμ ν΅ν΄ μμλ°μ κ°μ²΄λ₯Ό λ§νλ€. μλ₯Ό λ€μ΄, λ°°μ΄μ Array.prototypeμ Symbol.iterator λ©μλλ₯Ό μμλ°μ μ΄ν°λ¬λΈμ΄λ€. μ΄ν°λ¬λΈμ for...of λ¬Έ, μ€νλ λ λ¬Έλ², λ°°μ΄ λμ€νΈλμ²λ§ ν λΉμ λμμΌλ‘ μ¬μ©ν μ μλ€.
Symbol.iterator λ©μλλ₯Ό μ§μ ꡬννμ§ μκ±°λ μμλ°μ§ μμ μΌλ° κ°μ²΄λ μ΄ν°λ¬λΈ νλ‘ν μ½μ μ€μν μ΄ν°λ¬λΈμ΄ μλλ€. λ°λΌμ μΌλ° κ°μ²΄λ for...of λ¬ΈμΌλ‘ μνν μ μμΌλ©° μ€νλ λ λ¬Έλ²κ³Ό λ°°μ΄ λμ€νΈλμ²λ§ ν λΉμ λμμΌλ‘ μ¬μ©ν μ μλ€. νμ§λ§ μ΄ν°λ¬λΈ μΌλ° κ°μ²΄λ μ΄ν°λ¬λΈ νλ‘ν μ½μ μ€μνλλ‘ κ΅¬ννλ©΄ μ΄ν°λ¬λΈμ΄ λλ€.
34.1.2 μ΄ν°λ μ΄ν°
μ΄ν°λ¬λΈμ Symbol.iterator λ©μλλ₯Ό νΈμΆνλ©΄ μ΄ν°λ μ΄ν° νλ‘ν μ½μ μ€μν μ΄ν°λ μ΄ν°λ₯Ό λ°ννλ€. μ΄ν°λ¬λΈμ Symbol.iterator λ©μλκ° λ°νν μ΄ν°λ μ΄ν°λ next λ©μλλ₯Ό κ°λλ€. μ΄ν°λ μ΄ν°μ next λ©μλλ μ΄ν°λ¬λΈμ κ° μμλ₯Ό μννκΈ° μν ν¬μΈν°μ μν μ νλ€. μ¦, next λ©μλλ₯Ό νΈμΆνλ©΄ μ΄ν°λ¬λΈμ μμ°¨μ μΌλ‘ ν λ¨κ³μ© μννλ©° μν κ²°κ³Όλ₯Ό λνλ΄λ μ΄ν°λ μ΄ν° 리μ νΈ κ°μ²΄λ₯Ό λ°ννλ€.
const array = [1,2,3];
const iterator = array[Symbol.iterator]();
console.log(iterator.next()); // {value: 1, done: false}
console.log(iterator.next()); // {value: 2, done: false}
console.log(iterator.next()); // {value: 3, done: false}
console.log(iterator.next()); // {value: undefined, done: true}
34.2 λΉνΈμΈ μ΄ν°λ¬λΈ
μλ°μ€ν¬λ¦½νΈλ μ΄ν°λ μ΄μ νλ‘ν μ½μ μ€μν κ°μ²΄μΈ λΉνΈμΈ μ΄ν°λ¬λΈμ μ 곡νλ€.
λΉνΈμΈ μ΄ν°λ¬λΈ | Symbol.iterator λ©μλ | |
Array | Array.prototype[Symbol.iterator] | |
String | String.prototype[Symbol.iterator] | |
Map | Map.prototype[Symbol.iterator] | |
Set | Set.prototype[Symbol.iterator] | |
TypedArray | TypedArray.prototype[Symbol.iterator] | |
arguments | arguments[Symbol.iterator] | |
DOM 컬λ μ | NodeList.prototype[Symbol.iterator] | HTMLCollection.prototype[Symbol.iterator] |
34.3 for...of λ¬Έ
for...of λ¬Έμ μ΄ν°λ¬λΈμ μννλ©΄μ μ΄ν°λ¬λΈμ μμλ₯Ό λ³μμ ν λΉνλ€. for...of λ¬Έμ for...in λ¬Έμ νμκ³Ό λ§€μ° μ μ¬νλ€.
for...in λ¬Έμ κ°μ²΄μ νλ‘ν νμ μ²΄μΈ μμ μ‘΄μ¬νλ λͺ¨λ νλ‘ν νμ μ νλ‘νΌν° μ€μμ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ [[Enumerable]]μ κ°μ΄ trueμΈ νλ‘νΌν°λ₯Ό μννλ©° μ΄κ±°νλ€. μ΄λ νλ‘νΌν° ν€κ° μ¬λ²μΈ νλ‘νΌν°λ μ΄κ±°νμ§ μλλ€.
for...of λ¬Έμ λ΄λΆμ μΌλ‘ μ΄ν°λ μ΄ν°μ next λ©μλλ₯Ό νΈμΆνμ¬ μ΄ν°λ¬λΈμ μννλ©° next λ©μλκ° λ°νν μ΄ν°λ μ΄ν° 리μ νΈ κ°μ²΄μ value νλ‘νΌν° κ°μ for...of λ¬Έμ λ³μμ ν λΉνλ€. κ·Έλ¦¬κ³ μ΄ν°λ μ΄ν° 리μ νΈ κ°μ²΄μ done νλ‘νΌν° κ°μ΄ falseμ΄λ©΄ μ΄ν°λ¬λΈμ μνλ₯Ό κ³μνκ³ tureμ΄λ©΄ μ΄ν°λ¬λΈμ μνλ₯Ό μ€λ¨νλ€.
for(const item of [1,2,3]){
console.log(item); // 1 2 3
}
34.4 μ΄ν°λ¬λΈκ³Ό μ μ¬ λ°°μ΄ κ°μ²΄
μ μ¬ λ°°μ΄ κ°μ²΄λ λ§μΉ λ°°μ΄μ²λΌ μΈλ±μ€λ‘ νλ‘νΌν° κ°μ μ κ·Όν μ μκ³ length νλ‘νΌν°λ₯Ό κ°λ κ°μ²΄λ₯Ό λ§νλ€. μ μ¬ λ°°μ΄ κ°μ²΄λ length νλ‘νΌν°λ₯Ό κ°κΈ° λλ¬Έμ for λ¬ΈμΌλ‘ μνν μ μκ³ , μΈλ±μ€λ₯Ό λνλ΄λ μ«μ νμμ λ¬Έμμ΄μ νλ‘νΌν° ν€λ‘ κ°μ§λ―λ‘ λ§μΉ λ°°μ΄μ²λΌ μΈλ±μ€λ‘ νλ‘νΌν° κ°μ μ κ·Όν μ μλ€. μ μ¬ λ°°μ΄ κ°μ²΄λ μ΄ν°λ¬λΈμ΄ μλ μΌλ° κ°μ²΄λ€. λ°λΌμ μ μ¬ λ°°μ΄ κ°μ²΄μλ Symbol.iterator λ©μλκ° μκΈ° λλ¬Έμ for...of λ¬ΈμΌλ‘ μνν μ μλ€. λ¨, arguments, NodeList, HTMLCollectionμ μ μ¬ λ°°μ΄ κ°μ²΄μ΄λ©΄μ μ΄ν°λ¬λΈμ΄λ€.
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
36μ₯ λμ€νΈλμ²λ§ ν λΉ (0) | 2022.07.28 |
---|---|
35μ₯ μ€νλ λ λ¬Έλ² (0) | 2022.07.28 |
32μ₯ String (0) | 2022.07.27 |
28μ₯ Number (0) | 2022.07.27 |
27μ₯ λ°°μ΄ (0) | 2022.07.27 |