값으로서의 함수
- JavaScript에서는 함수도 객체이기 때문에 일종의 값이 될 수 있음을 의미한다.
- function test(){}는 var test = function(){};와 같다.
메소드란?
- 객체의 속성 값으로 담겨진 함수
var testA = function(){};
var testB = {
subject : function(){
console.log('execute test.subject()');
}
};
함수의 값으로서의 전달 방법
//문자열을 만드는 함수
function printTest(func, num){
return num + '의 제곱은 ' + func(num) + '입니다.';
}
//제곱의 결과를 반환하는 함수
function squaredTest(num){
return num*num;
}
console.log(printTest(squaredTest,3)); //출력 : 3의 제곱은 9입니다.
//해설
/*
1. printTest의 return에 보면 사용하는 인자 중 func의 뒤에 (num)이 붙어있다.
2. 이는 해당 인자를 함수로 사용하겠다는 JavaScript의 문법이다.
3. 그래서 func라는 인자에는 squaredTest라는 함수가 들어가서
num이라는 인자를 받아서 실행한 값을 리턴한다.
*/
리턴 값으로서의 함수 사용
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)); //출력 : 3
//실행과정
/*
1. cal('plus')(2,1);
2. funcs['plus'](2,1);
3. (function(left, right){return left + right})(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); //출력 : 60.5, 이유 : 1 → 11 → 121 → 60.5
배열의 요소 정렬
※ sort 메소드는 return 값이 음수/0/양수인지에 따라서 순서를 바꾼다.
function sortNumberAmB(a,b){
return a-b;
}
function sortNumberBmA(a,b){
return b-a;
}
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumberAmB));
// array, [1,2,3,4,5,6,7,8,9,10,20] => 비교 함수 (a, b)의 결과 값이 음수면 a가 앞으로 간다.
alert(numbers.sort(sortNumberBmA));
// array, [20,10,9,8,7,6,5,4,3,2,1] => 비교 함수 (a, b)의 결과 값이 음수면 b가 앞으로 간다.
//0인 경우에는 해당 요소를 제외한 다른 모든 데이터들에 대해서 정렬한다.