π μ΄ ν¬μ€ν μμλ JavaScriptμ λ°°μ΄μμ μμ£Ό μ°μ΄λ μ½λ°± ν¨μμ λν΄μ μμλ³΄κ² μ΅λλ€.
π₯ What's Callback Function
π₯ Useful Callback Function in Array
βοΈ Javascriptμ λ³μμλ μ«μλ λ¬Έμμ΄ κ°μ λ°μ΄ν°, κ°μ²΄λΏλ§ μλλΌ ν¨μλ λ³μμ ν λΉν μ μμ΅λλ€.
βοΈ λ³μμ ν¨μλ₯Ό ν λΉνλ€λ μλ―Έλ ν¨μλ₯Ό νλΌλ―Έν°λ‘ μ λ¬νκ±°λ ν¨μ μμμ λ λ€λ₯Έ ν¨μκ° μλλκ³ , λ°νν μ μλ€λ μλ―Έμ
λλ€.
βοΈ μ¦, μ½λ°±ν¨μ(Callback Function)λ νλΌλ―Έν°λ‘ ν¨μλ₯Ό μ λ¬λ°μ, ν¨μμ λ΄λΆμμ μ€νλλ ν¨μμ
λλ€.
βοΈ μ΄μ μ½λ°±ν¨μλ μ€μ€λ‘ μ€νλλκ² μλλΌ, μμ μ΄ μ λ¬λμ΄μ§λ ν¨μκ° μ€νλ λκΉμ§ κΈ°λ€λ¦¬λ€κ° νΈμΆμ λ°λΌ μλλ©λλ€.
function myCallBackFunc() { # π callback ν¨μ console.log('The callback function has been executed.'); } function sayHello(name, callback) { console.log(`Hello ${name}! Call the callback function below.`); callback(); console.log('End of "sayHello" function.'); } sayHello('Jaewon', myCallBackFunc); // Hello Jaewon! Call the callback function below. // The callback function has been executed. # π callback ν¨μμ μ€ν κ²°κ³Ό // End of "sayHello" function.
βοΈ μ½λ°±ν¨μλ₯Ό μ΅λͺ
ν¨μλ‘ μ¬μ©ν΄μΌλ§ νλ κ²μ μλλλ€. ν¨μμ μ΄λ¦μ λΆμ¬μ€ μ μμ£ .
βοΈ νμ§λ§, μΌλ°μ μΌλ‘ μ½λ°±ν¨μλ μ΄λ€ ν¨μκ° μ€νλκΈΈ κΈ°λ€λ Έλ€κ° μλνκΈ° λλ¬Έμ ν¨μ λ΄λΆμμ μλλκ³ , μ΄μ ν¨μμ μ΄λ¦μ΄ νμνμ§ μμ κ²½μ°κ° λ§κΈ° λλ¬Έμ
λλ€.
βοΈ μ¦, ν¨μλ₯Ό μ¬λ¬ κ³³μμ μ¬νμ©ν νμκ° μμ΄ ν΄λΉ ν¨μ λ΄λΆμμλ§ μλλλ€λ©΄, κ΅³μ΄ ν¨μλͺ
μ μ¬μ©ν νμκ° μκΈ° λλ¬Έμ μ΅λͺ
ν¨μλ‘ μμ£Ό μ¬μ©λ©λλ€.
function sum(a,b){ return a+b } function myFunc(a,b,callback){ let newA = a*10 // 20 let newB = b/2 // 5 let res = callback(newA, newB) console.log(res) } myFunc(2,10,sum) // 25
βοΈ λν μ½λ°± ν¨μμ κ°λ μ±κ³Ό κ°κ²°ν¨μ μν΄ νμ΄ν ν¨μλ‘ λνλ΄κΈ°λ ν©λλ€. μ ν¨μλ₯Ό νμ΄ν ν¨μλ‘ λ§λ€μ΄λ³΄κ² μ΅λλ€.
function myFunc(a,b){ let newA = a*10 // 20 let newB = b/2 // 5 let callback = (a, b) => {console.log(a+b)} callback(newA, newB) } myFunc(2,10) // 25
βοΈ find() : find 맀μλλ μ£Όμ΄μ§ λ₯Ό λ§μ‘±νλ 첫 λ²μ§Έ μμμ κ°μ λ°νν©λλ€. λ§μΌ μ½λ°± ν¨μμμ μꡬνλ 쑰건μ ν΄λΉνλ μμκ° μλ€λ©΄, "undefined"μ λ°νν©λλ€. filter 맀μλμ μ°¨μ΄μ μ filterλ 쑰건μ ν΄λΉνλ μμλ₯Ό λ°°μ΄λ‘ λ°ννκ³ , find 맀μλλ 쑰건μ ν΄λΉνλ 첫λ²μ§Έ μμ κ°μ λ°νν©λλ€.
students = [10, 80, 99, 40, 85, 32, 40, 98, 22, 78, 82, 85, 91, 90, 85] let result = students.find((value) => value === 85); console.log(result); // 85
βοΈ μ ν¨μλ₯Ό μλ νμ΄ν ν¨μλ‘ λ§λ€λ©΄ μλμ κ°μ΅λλ€.
students = [10, 80, 99, 40, 85, 32, 40, 98, 22, 78, 82, 85, 91, 90, 85] function callback(value){ if(value===85){ return value } } let result = students.find(callback); console.log(result); // 85
βοΈ filter(callbackFunction, thisAgr) : filter() λ©μλλ λ°°μ΄μ μμλ₯Ό μννλ©° μ½λ°±ν¨μμ μ λ¬νκ³ , μ½λ°±ν¨μμ ν΄λΉνλ μμλ€λ§ λͺ¨μμ μλ‘μ΄ λ°°μ΄μ λ°νν΄μ€λλ€. λ§μ½ μ½λ°±ν¨μμ 쑰건μ ν΄λΉνλ μμκ° μμ λμλ λΉ λ°°μ΄μ λ°νν©λλ€. μ¦, filter 맀μλλ μλ³Έ λ°°μ΄μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€. μ΄μ ν¨κ» μ½λ°±ν¨μμ 3κ°μ μΈμ(element, index, array)λ₯Ό κ°μ§λλ°, 첫λ²μ§Έ μΈμλ§ νμμ΄κ³ λ€λ₯Έ μΈμλ μ νμ λλ€.
let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; function callback(value){ if(value.includes('go')){ return true } } let result = fruits.filter(callback); console.log(fruits) // [ 'apple', 'banana', 'grapes', 'mango', 'orange' ] console.log(result) // [ 'mango' ]
βοΈ μ ν¨μλ₯Ό μλ νμ΄ν ν¨μλ‘ λ§λ€λ©΄ μλμ κ°μ΅λλ€.
let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; let result = fruits.filter((value) => value.includes('go')); console.log(fruits) // [ 'apple', 'banana', 'grapes', 'mango', 'orange' ] console.log(result) // [ 'mango' ]
βοΈ map(): λ°°μ΄ λ΄ μμλ€μ μμ°¨μ μΌλ‘ μννλ©°, μ½λ°±ν¨μμ μ λ¬ν΄ κ°μ μ²λ¦¬ν λ€ λ°°μ΄λ‘ λ°νν΄μ€λλ€.
students = [10, 20, 30, 40, 50] function callback(value){ return value * 2 } let result = students.map(callback); console.log(result); // [ 20, 40, 60, 80, 100 ]
βοΈ μ ν¨μλ₯Ό μλ νμ΄ν ν¨μλ‘ λ§λ€λ©΄ μλμ κ°μ΅λλ€.
students = [10, 20, 30, 40, 50] let result = students.map((value) => value * 2); console.log(result); // [ 20, 40, 60, 80, 100 ]
βοΈ someμ μ£Όμ΄μ§ λ°°μ΄μ μννλ©° callback ν¨μμ μμλ₯Ό μ λ¬νμ¬, callback ν¨μ 쑰건μ μΌμΉν μμκ° νλλΌλ μμΌλ©΄, trueλ₯Ό λ°νν©λλ€. μ¦, some 맀μλλ λ°°μ΄μ λͺ¨λ μμκ° callback ν¨μμ 쑰건μ μΌμΉνμ§ μμ λλ§ falseλ₯Ό λ°νμν΅λλ€.
let score1 = [98, 67, 45, 90, 77, 52]; let resultSome1 = score1.some((value) => value >= 95); console.log(resultSome1); // true let score2 = [98, 60, 88, 90, 77, 69]; let resultSome2 = score2.some((value) => value <= 50); console.log(resultSome2); // false
βοΈ μ΄μ λ°λλ‘ everyλ μ£Όμ΄μ§ λ°°μ΄μ μννλ©° callback ν¨μμ μμλ₯Ό μ λ¬νμ¬, callback ν¨μ 쑰건μ μΌμΉνμ§ μμ μμκ° νλλΌλ μμΌλ©΄, falseλ₯Ό λ°νν©λλ€. μ¦, every 맀μλλ λ°°μ΄μ λͺ¨λ μμκ° callback ν¨μμ 쑰건μ λͺ¨λ μΌμΉν λλ§ trueλ₯Ό λ°νμν΅λλ€.
let score1 = [98, 67, 45, 90, 77, 52]; let score2 = [98, 91, 88, 93, 94, 82]; let resultEvery1 = score1.every((value) => value >= 50); console.log(resultEvery1); // false let resultEvery2 = score2.every((value) => value >= 80); console.log(resultEvery2); // true