π‘ ν΄λΉ ν¬μ€ν μ μνμ½λ©λμ callback μμ μ μ 리ν λ΄μ©μ λλ€.
μνμ½λ© - JavaScript callback μμ λ€μΌλ¬κ°κΈ°
ν¨μ(callbackFunction)
λ€λ₯Έ ν¨μμ μ λ ₯ν¨μμ μ λ¬ λμ΄μ λ€λ₯Έ ν¨μμ μν΄μ λμ€μ νΈμΆλλ€κ³ ν΄μ CALLBACK FUNCTIONμ΄λΌκ³ λΆλ₯Έλ€.
μΌκΈ μλ―Ό νΉμ μΌκΈ κ°μ²΄
val = 1
1μ λ³μμ κ°μ΄ λ μ μλμ? Yes β μΌκΈ μλ―Ό
val = if(π) {π};
쑰건문μ λ³μμ κ°μ΄ λ μ μλμ? No β μ΄κΈ μλ―Ό(Second calss citizen)
val = function(π){ return π }
ν¨μλ λ³μμ κ°μ΄ λ μ μλμ? Yes β μΌκΈ μλ―Ό
function fn(){
val = function(π){ return π }
return val;
}
fn
μ΄λΌλ ν¨μλ val
μ 리ν΄νλ€.
ν¨μκ° λ€λ₯Έ ν¨μμ return κ°μ΄ λ μ μλ€λ©΄ κ·Έ μΈμ΄λ ν¨μλ₯Ό μΌκΈ μλ―ΌμΌλ‘ λμ°ν΄μ€λ€.
val = function(π){ return π }
fn(val)
val
μ΄λΌλ ν¨μλ fn
μ΄λΌλ ν¨μμ μ
λ ₯κ°μΌλ‘ μ¬μ©λκ³ μλ€.
ν¨μκ° λ€λ₯Έ ν¨μμ μ
λ ₯κ°μ΄ λ μ μλ€λ©΄ κ·Έ μΈμ΄μμλ ν¨μλ₯Ό μΌκΈ μλ―ΌμΌλ‘ λμ°ν΄μ£Όκ³ μλ€λ κ²μ΄λ€.
fn
μ΄λΌλ ν¨μλ arg
λΌλ νλΌλ―Έν°λ₯Ό λ°μμ fn
ν¨μ μμμ arg
λ₯Ό ν¨μλ‘μ νΈμΆνκ³ μλ€.
val
μ μ§κΈ λΉμ₯ νΈμΆλμ§ μμ§λ§ λ€λ₯Έ ν¨μμ μ
λ ₯ν¨μμ μ λ¬ λμ΄μ λ€λ₯Έ ν¨μμ μν΄μ λμ€μ νΈμΆλλ€κ³ ν΄μ callback functionμ΄λΌκ³ λΆλ₯Έλ€.
μ¦, val
μ체λ μ½λ°±ν¨μκ° μλμ§λ§ val
ν¨μκ° λ€λ₯Έ ν¨μμ μ
λ ₯κ°μΌλ‘ μ λ¬λΌμ κ·Έκ²μ΄ νΈμΆλλ€κ³ νλ©΄ callback functionμ΄ λλ κ²μ΄λ€.
Array.prototype.filter() - JavaScript | MDN
const words = ["spray", "limit", "elite", "exuberant", "destruction", "present"];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
word β word.length>6
ν¨μλ₯Ό filter
λΌλ ν¨μμ μ
λ ₯κ°μΌλ‘ μ£Όμ
μμΌμ€¬λ€.
μ΄λ word β word.length>6
κ° callback ν¨μμ΄λ€.
arr.filter(**callback(element[, index[, array]]**)[, thisArg])
filter
ν¨μλ 첫λ²μ§Έ νλΌλ―Έν°λ‘ ν¨μ(callback ν¨μ)λ₯Ό λ°λλ‘ λμ΄μλ€.const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
function callback(element) {
console.log(element);
// 'spray' 'limit' 'elite' 'exuberant' 'destruction' 'present'
// μ½λ°±ν¨μλ 첫λ²μ§Έ νλΌλ―Έν°λ‘ κ°κ°μ μμλ₯Ό μ€ κ²μ΄λΌκ³ μ½μλμ΄μλ€.
if(element.length > 6){
return true
} else {
return false
}
}
newWords = words.filter(callback)
console.log(newWords) // [ 'exuberant', 'destruction', 'present' ]
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
function callback(element) {
return element.length > 6
}
newWords = words.filter(callback)
console.log(newWords) // [ 'exuberant', 'destruction', 'present' ]
μΌλ°μ μΌλ‘ μ½λ°±ν¨μλ ν¨μλ₯Ό λ§λ€μ΄ μ°λ κ²½μ°λ μμ§λ§, μλ κ²½μ°μ λ± νλ²λ§ μ¬μ©νλ κ²½μ°κ° λ§λ€.
κ·Έλμ μ½λ°±ν¨μμ μ½λ°±μ μλΉνλ ν¨μκ° λ©λ¦¬ λ¨μ΄μ ΈμμΌλ©΄ μλ‘ μμ§λ ₯μ΄ λ¨μ΄μ§λ€.
μ΄λ΄λ λ§μ΄ μ°λκ² μ΄λ¦μ λΊλ κ²μ΄λ€. ( = μ΅λͺ
ν¨μ )
μ΄ μ΅λͺ
ν¨μλ₯Ό μ½λ°±μ리μ λΆμ¬λ£κΈ°ν΄μ μ¬μ© κ°λ₯νλ€. ( β λ§μ΄ μ°λ ν
ν¬λ )
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
newWords = words.filter(function(element) {
return element.length > 6
};
) // [ 'exuberant', 'destruction', 'present' ]
μ΅κ·Όμλ νμ΄ννκΈ° μ«μ κ°λ°μλ€μ΄ νμ΄ν ν¨μλ₯Ό λμ ν΄μ functionλ μλ΅ν΄μ μ¬μ© κ°λ₯
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
newWords = words.filter((element) => {return element.length > 6};) // [ 'exuberant', 'destruction', 'present' ]
κ·Έλ¦¬κ³ νλΌλ―Έν°κ° νλμΈ κ²½μ°μ ()
λ νμμλ€.
ν¨μ μ½λκ° νμ€μΈ κ²½μ° {}
μ return
λ νμμλ€.
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
newWords = words.filter(element => element.length > 6) // [ 'exuberant', 'destruction', 'present' ]
μ΄λ κ² νλ©΄ μμ£Ό κ°κ²°ν μ½λκ° λλ€.
μ΄λ κ² λ§λ€μ΄μ§ μ½λκ° λͺ¨μ§λΌ μμ μ½λμ΄λ€. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
filter
λΌλ ν¨μλ μ°λ¦¬κ° 곡κΈν callback ν¨μλ₯Ό μλΉνλ€.
μ§μ callback ν¨μλ₯Ό μλΉνλ ν¨μλ₯Ό λ§λ€μ΄λ³΄μ
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
// newWords = words.filter(element => element.length > 6)
function myfilter(origin, callback){
var result = [];
for(var i=0; i<origin.length; i++){ // origin λ°μ΄ν° μ‘°ννκΈ°
var current = origin[i] // νμ¬ μλ²μ currentμ λ΄κΈ°
if(callback(current)){ // currentλ₯Ό callbackν¨μμ μ
λ ₯κ°μΌλ‘ μ λ¬νμ λ true λΌλ©΄
result.push(current); // λΉ λ°°μ΄μΈ result λ³μμ currentμ κ°μ μΆκ°νλ€.
}
}
return result; // λ§λ€μ΄μ§ μλ‘μ΄ result λ°°μ΄μ return νλ€.
}
newWords = myfilter(words, element => element.length > 6);
console.log(newWords); // [ 'exuberant', 'destruction', 'present' ]
filter
μμ μ½λμ λμΌν λμμ νλ myfilter
λΌλ ν¨μκ° λ§λ€μ΄μ‘λ€.
filter
ν¨μλ₯Ό ν΅ν΄ callback ν¨μκ° λ¬΄μμΈμ§, μ΄λ»κ² νμ©νλμ§μ λν΄ μμ보μλ€.
callback ν¨μλ λ€λ₯Έ ν¨μμ μ
λ ₯ν¨μμ μ λ¬ λμ΄μ λ€λ₯Έ ν¨μμ μν΄μ λμ€μ νΈμΆλλ ν¨μμ΄λ€.