whatisthis?
javaScript. μ½λ°±ν¨μ(Callback) λ³Έλ¬Έ
Callback
π ν¨μ(Function)
μλ°μ€ν¬λ¦½νΈμμ ν¨μλ μΌκΈκ°μ²΄μ΄λ€.
μΌκΈ κ°μ²΄(first-class object)λ,
λ€λ₯Έ κ°μ²΄λ€μ μΌλ°μ μΌλ‘ μ μ© κ°λ₯ν μ°μ°μ λͺ¨λ μ§μνλ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
βͺ λ³μμ ν λΉ(assignment)ν μ μλ€.
βͺ λ€λ₯Έ ν¨μλ₯Ό μΈμ(argument)λ‘ μ λ¬λ°μ μ μλ€.
βͺ λ€λ₯Έ ν¨μμ κ²°κ³Όλ‘μ return λ μ μλ€.
βͺ μ€ν λμ€μ μμ±λ μ μλ€.
- μ½λ°±ν¨μλ μ΄μ€μμλ '맀κ°λ³μλ‘ μ λ¬ν μ μλ€', μ¦ 'λ€λ₯Έν¨μλ₯Ό μΈμλ‘ μ λ¬λ°μ μ μλ€' λ νΉμ§μ μ΄μ©.
π μ½λ°±ν¨μ(Callback)
- λ€λ₯Έν¨μμ 맀κ°λ³μλ‘ λκ²¨μ€ ν¨μλ₯Ό μλ―Έ.
- 맀κ°λ³μλ‘ λ겨λ°μ ν¨μλ μΌλ¨ λ겨λ°κ³ , λμ€μ νΈμΆ(called back)νλ€λ μλ―Έ.
μ¦, Aν¨μμ μΈμ(argument)λ‘ λ€μ΄κ° ν¨μ Bλ₯Ό callbackμ΄λΌ νλ€.
function A(par1, par2, par3) {
par1 < 0? par2() : par3() // μΌνμ°μ°μ γ
‘ 쑰건? true : false
}
function B {
// λ΄μ©
}
function C {
// λ΄μ©
}
A(1, B, C); // Aμ μΈμλ‘ Bν¨μμ Cν¨μκ° λ€μ΄κ° γ
‘ B, Cλ μ½λ°±ν¨μ
- μ΄ λκ°μ ν¨μλ₯Ό μ μΈνκ³
- A ν¨μλ₯Ό νΈμΆν λ 맀κ°λ³μλ‘ 1,B,Cλ₯Ό μ λ¬νλ€.
>> μ¦, par2μ Bλ₯Ό μ λ¬νκ³ , par3μ Cλ₯Ό μ λ¬νμΌλ―λ‘ B,Cκ° μ½λ°±ν¨μκ° λλ€.
<κ³Όμ >
μ°μ , Aν¨μκ° λ¨Όμ νΈμΆλκ³
par1μ κ°μ λ°λΌ Bμ Cμ€ νκ°μ§κ° λμ€μ νΈμΆλλ€.
μ μμ μμλ par1μ΄ 0λ³΄λ€ ν¬λ―λ‘ false - par3()μ μν΄ Cν¨μκ° μ€νλ¨.
κ·Έλ λ€λ©΄, μ½λ°±ν¨μλ μ νμν κΉ?
- λ³μμ scope(μ€μ½ν), μ¦ μ ν¨λ²μμ λκΈ°/λΉλκΈ°λ₯Ό μ΄ν΄ν΄μΌν¨.
μ°μ μ, μ½λ°±ν¨μλ μ μμ μ κ°μ΄
μ¬λ¬ ν¨μλ₯Ό μ μΈνκ³ , μ΄λ ν ν¨μκ° μ€νλ λ
μν©μ λ°λΌ νμν λ€λ₯Έ ν¨μλ₯Ό μ€ννκ³ μΆμ λ νμ© κ°λ₯.
λλ‘λ κ°λ μ±μ΄λ μ½λ μ¬μ¬μ©μ μν΄ μ°κΈ°λ νλ€.
function add(a,b) {
return a + b;
}
function sayResult(value) {
console.log(value);
}
sayResult(add(3, 4));
μμ κ°μ μ½λλ₯Ό callbackμ μ΄μ©νλ©΄ λ€μκ³Ό κ°λ€.
function add(a, b, callback) {
callback(a + b);
}
function sayResult(value) {
console.log(value);
}
add(3, 4, sayResult);
κ²°κ³Όλ κ°μ§λ§, ν¨μλ₯Ό νΈμΆνλ μμ μ΄λ λμνλ μμκ° μ‘°κΈμ© λ¬λΌμ§λ€.
π κ³ μ°¨ν¨μ (High-order function)
- ν¨μλ₯Ό μΈμ(argument) λλ 맀κ°λ³μ(parameter)λ‘ λ°κ±°λ ν¨μλ₯Ό 리ν΄ν¨.
- κ³ μ°¨ ν¨μλ 맀κ°λ³μλ₯Ό ν΅ν΄ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό νΈμΆ μμ μ κ²°μ νμ¬ νΈμΆνλ€.
>> μ½λ°± ν¨μλ κ³ μ°¨ ν¨μμ μν΄ νΈμΆλλ©°,
μ΄ λ κ³ μ°¨ ν¨μλ νμμ λ°λΌ μ½λ°± ν¨μμ μΈμλ₯Ό μ λ¬ν μ μλ€.
- μ½λ°±ν¨μκ° κ³ μ°¨ν¨μ λ΄λΆμλ§ νΈμΆλλ€λ©΄?
μ½λ°±ν¨μλ₯Ό μ΅λͺ ν¨μ 리ν°λ΄λ‘ μ μ (μ΄λ¦β) - λ°λ‘ κ³ μ°¨ν¨μμ μ λ¬ν¨.
job(5, function (num) { // μ΅λͺ
ν¨μ 리ν°λ΄
if(num % 2 == 0) console.log(num);
});
** 리ν°λ΄ = new μμ΄ μ μΈ.
** μ΅λͺ ν¨μ = ν¨μλͺ λμ λ³μλͺ μ ν¨μ μ½λλ₯Ό μ μ₯νλ λ°©μ. (λμ μΈλ―Έμ½λ‘ νμ) = ν¨μ ννμ
( νΈμ΄μ€ν X )
π ν¨μννμμ μ£Όλ‘ μ½λ°±μΌλ‘ μ¬μ©λ¨ (μ΅λͺ ν¨μ 리ν°λ΄λ‘ μ μ)
π μ½λ°±ν¨μ (Callback)
- μ λ¬μΈμ(argument)λ‘ λ°λ ν¨μ.
- 맀κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ ν¨μμ λ΄λΆλ‘ μ λ¬λλ ν¨μ.
- 맀κ°λ³μλ₯Ό ν΅ν΄ μ½λ°±ν¨μλ₯Ό μ λ¬λ°λ ν¨μ = κ³ μ°¨ν¨μ
μΆν λ΄μ© μΆκ°μμ .
REFERENCE
'WEB STUDY > JAVASCRIPT' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
javaScript. (11) Document κ°μ²΄ (0) | 2022.01.24 |
---|---|
javaScript. (10) Window κ°μ²΄ + BOM (0) | 2022.01.24 |
javaScript. (9) λ°°μ΄(Array) (0) | 2022.01.24 |
javaScript. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP) (0) | 2022.01.22 |
javaScript. ν΄λμ€ vs νλ‘ν νμ ( βͺ μμ±μ ) (0) | 2022.01.22 |