JavaScript에서는 함수도 객체다
function a (){} 와 let a = function(){} 는 같다
또 함수는 객체의 값으로도 포함될 수 있는데 이렇게 객체의 속성 값으로 담긴 함수를 method라고 부른다
a = {
b:function(){
}
}
함수는 함수의 리턴 값으로도 사용할 수 있다
function cal(mode){
let funcs = {
'plus' : function(left, right) {return left + right}
}
return funcs[mode]
}
console.log(cal('plus')(2, 1) // 3
cal('plus') 실행시 return 으로 바로 가서 func[mode]이 리턴되면서 키값이 plus를 불러온다
어떠한 함수가 수신하는 인자가 함수인 경우를 Callback이라 한다
let numbers = [10,2, 3, 4, 5, 1]
let sortfunc = function(a, b) {
return a- b;
}
console.log(numbers.sort(sortfunc));
이렇게 sort 라는 메소드가 sortfunc라는 함수를 값으로서 쓸수 있기때문에 sort의 동작방법을 완전히 바꿀수 있는 것을 Callback이라 한다 이는 JavaScript의 함수가 값이기 때문에 가능
Callback은 비동기처리에서 유용하게 사용된다