값은 변수에 할당할 수 있다. 값이기 때문이다.
JS에서 함수는 변수에 할당 할 수 있다. 즉, 함수는 객체이며 이는 일종의 값이다. 아래 예제를 보면 함수는 변수 a에 할당된 값이다.
var a = function() {}
function a(){}
함수를 객체에 저장할 수 있다. 객체에 저장된 함수를 메소드(method)라고 한다. 예제에서 b 함수를 실행하려면 a.b()로 실행 할 수 있다.
var a = { b: function() {} }
함수는 값이기 때문에 함수의 인자로 전달 할 수 있다.
function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
alert(cal(increase, 1));
alert(cal(decrease, 1));
함수는 함수의 리턴 값으로도 사용할 수 있다.
function cal(mode){
var funcs = {
'plus' : function(left, right){return left + right},
'minus' : function(left, right){return left - right}
}
return funcs[mode];
}
alert(cal('plus')(2,1));
alert(cal('minus')(2,1));
당연히 배열의 값으로도 사용할 수 있다.
var process = [
function(input){ return input + 10;},
function(input){ return input * input;},
function(input){ return input / 2;}
];
var input = 1;
for(var i = 0; i < process.length; i++){
input = process[i](input);
}
alert(input);