값으로서의 함수
a = {
b:function(){
}
};
- 객체 안에서 key(예시에서 b)가 변수의 역할을 하고, 그것을 속성(property)라고 부른다.
- 객체 안에 속성과 함께 저장된 함수를 그러한 맥락에서 메소드(method)라고 부른다.
함수가 인자로 들어간 예시
function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
alert(cal(increase, 1));
- 함수는 값이기 때문에 다른 함수의 인자로 전달 될수도 있다.
- cal 을 실행하면 increase 가 첫번째 인자인 func 자리로, 1 이 num 자리로 간다.
- cal 내부에 기능으로 그럼 increase(1) 을 실행해야 한다.
- increase 함수로 가서 1을 argument 자리에 넣고 실행한다.
- 결과로 2가 호출된다.
리턴 값으로 사용된 함수의 예시
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);
- 함수는 배열의 값으로도 사용할 수 있다.
- i = 0 일 때, 첫번째 function을 실행해서 input이 1이므로 첫번째 function에서 11이 return 되어 나오고, 새로운 input으로 11이 지정된다. i = 1이 되고, 두번째 function 후 121. i = 2가 되고 세번째 function 후 60.5 가 리턴되어 나온다.