Amarans
0316 Java Script | 값으로서 함수와 콜백 | 본문
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));
10행을 실행하면 함수 increase와 값 1이 함수 cal의 인자로 전달된다. 함수 cal은 첫번째 인자로 전달된 increase를 실행하는데 이 때 두번째 인자의 값이 1을 인자로 전달한다. 함수 increase은 계산된 결과를 리턴하고 cal은 다시 그 값을 리턴한다.
결과값 : 2 : 0
-----------------------------------------------------------------------------------------------------------------------------------
함수는 함수의 리턴 값으로도 사용할 수 있다
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));
결과값 : 3 / 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);
0번째일때 1+10
1번째일때 11 x 11
2번째일때 121 / 2
결과값 : 60.5
-----------------------------------------------------------------------------------------------------------------------------------
콜백
처리의 위임
값으로 사용될 수 있는 특성을 이용하면 함수의 인자로 함수로 전달할 수 있다. 값으로 전달된 함수는 호출될 수 있기 때문에 이를 이용하면 함수의 동작을 완전히 바꿀 수 있다. 인자로 전달된 함수 sortNumber의 구현에 따라서 sort의 동작방법이 완전히 바뀌게 된다.
function sortNumber(a,b){
// 위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.
return b-a;
}
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber)); // array, [20,10,9,8,7,6,5,4,3,2,1]
numbers.sort = 1.10.2.20.3.4.5.6.7.8.9 로 문자 ? 로 나오기때문에.
sortNumber 을 만들어 a - b 를 하면
결과값 : 1.2.3.4.5.6.7.8.9.10.20
b - a 를 하면
결과값 : 20.10.9.8.7.6.5.4.3.2.1 이 출력된다.
'JavaScript' 카테고리의 다른 글
0317 Java Script | 클로저(closure)2 | (0) | 2020.03.17 |
---|---|
0317 JavaScript | 클로저(closure) | (0) | 2020.03.17 |
0313 Java Script | 유효범위 대상 | (0) | 2020.03.13 |
0313 Java Script | 지역변수 와 전역변수의 유효범위 | (0) | 2020.03.13 |
0313 Java Script |전역변수와 지역변수| (0) | 2020.03.13 |