μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- react
- μ€λμ΄νΌν©ν 리
- νλ‘μΈμ€
- μ€λ λ
- cs #λ€νΈμν¬
- javascript
- 리μ‘νΈ
- #νλ‘μ νΈμΊ ν #νλ‘μ νΈμΊ ννκΈ° #μ λ°λ―Έ #μ€λμ΄νΌν©ν 리 #μ μ§μ½ν¬λΉ #μΈμ¬μ΄λμμ #ITκ°λ°μΊ ν #κ°λ°μλΆνΈμΊ ν #리μ‘νΈ #react #λΆνΈμΊ ν #리μ‘νΈμΊ ν
- λ€νΈμν¬
- νλ‘κ·Έλλ¨Έμ€
- λ©λͺ¨λ¦¬
- κ°λ°μλΆνΈμΊ ν
- νλ‘μ νΈμΊ ν
- μκ³ λ¦¬μ¦
- CS
- BFS
- μ λ°λ―Έ
- App Runner
- typescript
- ip
- μλ°μ€ν¬λ¦½νΈ
- Algorithm
- html
- ITκ°λ°μΊ ν
- νμ μ€ν¬λ¦½νΈ
- μΈμ¬μ΄λμμ
- react-query
- ν΄μ
- React.js
- μ μ§μ½ν¬λΉ
- Today
- Total
Bin's Blog
μ½λ°± ν¨μ λ³Έλ¬Έ
π§ μ½λ°± ν¨μλ?
π μ½λ°±ν¨μλ λ€λ₯Έ μ½λμ μΈμλ‘ λ겨주λ ν¨μμ΄λ€. μ½λ°± ν¨μλ₯Ό λ겨λ°μ μ½λλ μ΄ μ½λ°± ν¨μλ₯Ό νμμ λ°λΌ μ μ ν μμ μ μ€ννλ€.
π μ½κ² μλ₯Ό λ€μ΄λ³΄μ, λ΄κ° μ’μνλ μΉκ΅¬μ μμΌ νν°μ μ΄λλ₯Ό λ°μλ€. κ·Έλμ λλ λΆλͺ¨λνν "μΉκ΅¬κ° λλ₯Ό νν°μ μ΄λνμ΄, νν°κ° λλλ©΄ λλ₯Ό νκ΅λ‘ λ°λ €λ€ μ€ μ μμκΉ?"λΌκ³ λΆννλ€. μ¬κΈ°μ "λλ₯Ό νκ΅λ‘ λ°λ €λ€ μ€ μ μμκΉ?"λΌλ λΆνμ΄ μ½λ°± ν¨μμ λΉμ·νλ€.
μ΄ μν©μμ λΆλͺ¨λμκ² μ½λ°±μ μ λ¨νκ³ , νν°κ° λλλ μμ μ λͺ¨λ₯΄μ§λ§, κ·Έ μμ μ΄ λλ©΄ λΆλͺ¨λμ μ λ¬ν μμ² (λλ₯Ό νκ΅λ‘ λ°λ €λ€ μ£Όλ κ²)μ μννκ² λλ€.
π μ½λ°± ν¨μλ μ΄λ€ μ΄λ²€νΈκ° λ°μνκ±°λ νΉμ μμ μ΄ μλ£λμμ λ μ€νλμ΄μΌ νλ ν¨μμ΄λ€. μ½λ°± ν¨μλ μ΄λ²€νΈλ μμ μ΄ μλ£λλ μμ μ μ€νλλλ‘ "λμ€μ νΈμΆνλΌκ³ " μμ½ν΄ λλ λ°©λ²μ μ 곡νλ€.
π callbackμ "νΈμΆνλ€"λ μλ―ΈμΈ callκ³Ό, "λλλ€"λ μλ―ΈμΈ backμ ν©μ±μ΄λ‘, "λλμ νΈμΆν΄λ¬λΌ"λ λͺ λ Ήμ΄λ€.
π μ΄λ€ ν¨μ Xλ₯Ό νΈμΆνλ©΄μ νΉμ μ‘°κ±΄μΌ λ ν¨μ Yλ₯Ό μ€νν΄μ λμκ² μλ €λ¬λΌλ μμ²μ ν¨κ» 보λΈλ€. μ΄ μμ²μ λ°μ ν¨μ Xμ μ μ₯μμλ ν΄λΉ μ‘°κ±΄μ΄ κ°μΆ°μ‘λμ§ μ€μ€λ‘ νλ¨νκ³ Yλ₯Ό μ§μ νΈμΆνλ€. μ΄μ²λΌ μ½λ°± ν¨μλ λ€λ₯Έ μ½λ(ν¨μ λλ λ©μλ)μκ² μΈμλ‘ λ겨μ€μΌλ‘μ¨ κ·Έ μ μ΄κΆλ ν¨κ» μμν ν¨μμ΄λ€. μ½λ°± ν¨μλ₯Ό μμλ°μ μ½λλ μ체μ μΈ λ΄λΆ λ‘μ§μ μν΄ μ΄ μ½λ°± ν¨μλ₯Ό μ μ ν μμ μ μ€νν κ²μ΄λ€.
1οΈβ£ - 1οΈβ£ νΈμΆμμ
let count = 0;
let cbFunc = () => {
console.log(count);
if (++count > 4) clearInterval(timer);
};
let timer = setInterval(cbFunc, 300);
// -- μ€ν κ²°κ³Ό --
// 0 (0.3μ΄)
// 1 (0.6μ΄)
// 2 (0.9μ΄)
// 3 (1.2μ΄)
// 4 (1.5μ΄)
π timer λ³μμλ setIntervalμ ID κ°μ΄ λ΄κΈ΄λ€. setIntervalμ μ λ¬ν 첫 λ²μ§Έ μΈμμΈ cbFunc ν¨μ(μ΄ ν¨μκ° κ³§ μ½λ°± ν¨μμ΄λ€)λ 0.3μ΄ λ§λ€ μλμΌλ‘ μ€νλλ€.
π μ½λ°± ν¨μ λ΄λΆμμλ count κ°μ μΆλ ₯νκ³ , countλ₯Ό 1λ§νΌ μ¦κ°μν¨ λ€μ, κ·Έ κ°μ΄ 4λ³΄λ€ ν¬λ©΄ λ°λ³΅ μ€νμ μ’ λ£νλΌκ³ νλ€.
π μ½λ μ€ν λ°©μκ³Ό μ μ΄κΆ
code | νΈμΆ 주체 | μ μκΆ |
cbFunc(); | μ¬μ©μ | μ¬μ©μ |
setInterval(cbFunc, 300); | setInterval | setInterval |
μ΄ μ½λλ₯Ό μ€ννλ©΄ 0.3μ΄μ ν λ²μ© μ«μκ° 0λΆν° 1μ© μ¦κ°νλ©° μΆλ ₯λλ€κ° 4κ° μΆλ ₯λ μ΄ν μ’ λ£λλ€. setIntervalμ΄λΌκ³ νλ 'λ€λ₯Έ μ½λ'μ 첫 λ²μ§Έ μΈμλ‘μ cbFunc ν¨μλ₯Ό λ겨주μ μ μ΄κΆμ λ겨λ°μ setInterval μ΄ μ€μ€λ‘μ νλ¨μ λ°λΌ μ μ ν μμ μ(0.3μ΄λ§λ€) μ΄ μ΅λͺ ν¨μλ₯Ό μ€ννλ€. μ΄μ²λΌ μ½λ°± ν¨μμ μ μ΄κΆμ λ겨λ°μ μ½λλ μ½λ°± ν¨μ νΈμΆ μμ μ λν μ μ΄κΆμ κ°μ§λ€.
1οΈβ£ - 2οΈβ£ μΈμ
π μ½λ°± ν¨μ μμ (Array.prototype.map)
let newArr = [10, 20, 30].map((currentValue, index) => {
console.log(currentValue, index);
return currentValue + 5;
});
console.log(newArr);
// -- μ€ν κ²°κ³Ό --
// 10 0
// 20 1
// 30 2
// [15, 25, 35]
π map λ©μλλ 첫 λ²μ§Έ μΈμλ‘ callback ν¨μλ₯Ό λ°κ³ , μλ΅ κ°λ₯ν λ λ²μ§Έ μΈμλ‘ μ½λ°± ν¨μ λ΄λΆμμ thisλ‘ μΈμν λμμ νΉμ ν μ μλ€. thisArgλ₯Ό μλ΅ν κ²½μ°μλ μΌλ°μ μΈ ν¨μμ λ§μ°¬κ°μ§λ‘ μ μκ°μ²΄κ° λ°μΈλ©λλ€. map λ©μλλ λ©μλμ λμμ΄ λλ λ°°μ΄μ λͺ¨λ μμλ€μ μ²μλΆν° λκΉμ§ νλμ© κΊΌλ΄μ΄ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνκ³ , μ½λ°± ν¨μμ μ€ν κ²°κ³Όλ€μ λͺ¨μ μλ‘μ΄ λ°°μ΄μ λ§λ λ€.
π μ½λ°± ν¨μμ 첫 λ²μ§Έ μΈμμλ λ°°μ΄μ μμ μ€ νμ¬κ°μ΄, λ λ²μ§Έ μΈμμλ νμ¬κ°μ μΈλ±μ€κ°, μΈ λ²μ§Έ μΈμμλ map λ©μλμ λμμ΄ λλ λ°°μ΄ μμ²΄κ° λ΄κΈ΄λ€.
π 첫 λ²μ§Έ(μΈλ±μ€ 0)μ λν μ½λ°± ν¨μλ currentValueμ 10μ΄, indexμλ μΈλ±μ€ 0μ΄ λ΄κΈ΄ μ± μ€νλλ€. κ° κ°μ μΆλ ₯ν λ€μ, 15 (10 + 5)λ₯Ό λ°ννλ€. κ·Έλ¦¬κ³ λ λ²μ§Έ(μΈλ±μ€ 1)μ λν μ½λ°± ν¨μλ currentValueμ 20μ΄, indexμλ 1μ΄ λ΄κΈ΄ μ±λ‘ μ€νλλ€. 25 (20 + 5)λ₯Ό λ°ννλ€. [10, 15, 25]μ΄λΌλ μλ‘μ΄ λ°°μ΄μ΄ λ°νλλ€.
π μΈμμ μμλ₯Ό λ°κΏλ μ»΄ν¨ν°λ μμμ μν΄μλ§ κ°κ°μ ꡬλΆνκ³ μΈμνλ€.
π map λ©μλλ₯Ό νΈμΆν΄μ μνλ λ°°μ΄μ μ»μΌλ €λ©΄ map λ©μλμ μ μλ κ·μΉμ λ°λΌ ν¨μλ₯Ό μμ±ν΄μΌ νλ€. map λ©μλμ μ μλ κ·μΉμλ μ½λ°± ν¨μμ μΈμλ‘ λμ΄μ¬ κ°λ€ λ° κ·Έ μμλ ν¬ν¨λΌ μλ€. μ½λ°± ν¨μλ₯Ό νΈμΆνλ μ£Όμ²΄κ° μ¬μ©μκ° μλ map λ©μλμ΄λ―λ‘ map λ©μλκ° μ½λ°± ν¨μλ₯Ό νΈμΆν λ μΈμκ° μ΄λ€ κ°λ€μ μ΄λ€ μμλ‘ λκΈΈ κ²μΈμ§κ° μ μ μΌλ‘ map λ©μλμκ² λ¬λ Έλ€. μ΄μ²λΌ μ½λ°± ν¨μμ μ μ΄κΆμ λ겨λ°μ μ½λλ μ½λ°± ν¨μλ₯Ό νΈμΆν λ μΈμμ μ΄λ€ κ°λ€μ μ΄λ€ μμλ‘ λκΈΈ κ²μΈμ§μ λν μ μ΄κΆμ κ°μ§λ€.
2οΈβ£ μ½λ°± ν¨μλ ν¨μλ€
π λ©μλλ₯Ό μ½λ°± ν¨μλ‘ μ λ¬ν κ²½μ°
let obj = {
vals: [1, 2, 3],
logValues: (v, i) => {
console.log(this, v, i);
}
};
// { vals: [1, 2, 3], logValues: f } 1, 2}
obj.logValues(1, 2);
// window { ... } 4 0
[4, 5, 6].forEach(obj.logValues)
// window { ... } 5 1
// window { ... } 6 2
π μμ obj.logValuesλ μμ μ μ΄ λΆμ΄μ λ©μλλ‘μ νΈμΆνλ€. thisλ objμ κ°λ¦¬ν€κ³ μΈμλ‘ λμ΄μ¨ 1, 2κ° μΆλ ₯λλ€.
π λ°λ©΄μ κ·Έ λ°μ forEach ν¨μμ μ½λ°± ν¨μλ‘μ μ λ¬νλ€. objλ₯Ό thisλ‘ νλ λ©μλλ₯Ό κ·Έλλ‘ μ λ¬ν κ²μ΄ μλλΌ, obj.logValuesκ° κ°λ¦¬ν€λ ν¨μλ§ μ λ¬νλ€. objλ₯Ό thisλ‘ νλ λ©μλλ₯Ό κ·Έλλ‘ μ λ¬ν κ²μ΄ μλλΌ, objμ μ§μ μ μΈ μ°κ΄μ΄ μμ΄μ§λ€. forEachμ μν΄ μ½λ°± ν¨μλ‘μ νΈμΆμ΄ λκ³ , thisλ₯Ό λ³λλ‘ μ§μ νμ§ μμμ μ μκ°μ²΄λ₯Ό λ°λΌλ³΄κ² λλ€.
π κ²°λ‘ , μ΄λ€ ν¨μμ μΈμμ κ°μ²΄μ λ©μλλ₯Ό μ λ¬νλλΌλ κ²°κ΅ λ©μλκ° μλ ν¨μμΌ λΏμ΄λ€.
3οΈβ£ μ½λ°± ν¨μ λ΄λΆμ thisμ λ€λ₯Έ κ°μ λ°μΈλ©νλ μ’μ λ°©λ²
π bind λ©μλ νμ©
let obj1 = {
name: "obj1",
func: function () {
console.log(this.name);
}
};
// this.name = obj1μ μΆλ ₯
setTimeout(obj1.func.bind(obj1), 1000);
// this.name = obj2λ₯Ό μΆλ ₯
let obj2 = { name: "obj2" };
setTimeout(obj1.func.bind(obj2), 1500);
'JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘ν νμ (0) | 2023.07.15 |
---|---|
μ½λ°± μ§μ₯(κΈ°λͺ ν¨μ) (0) | 2023.06.27 |
forEach λ©μλ (0) | 2023.06.02 |
concat λ©μλ (0) | 2023.06.01 |
every λ©μλ (0) | 2023.05.30 |