함수 지향 - 값으로서의 함수와 콜백 함수
포스트
취소

함수 지향 - 값으로서의 함수와 콜백 함수

값으로서의 함수

  • 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인 경우에는 해당 요소를 제외한 다른 모든 데이터들에 대해서 정렬한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.