티스토리 뷰

값으로서의 함수와 콜백

1) 함수용도 1
자바스크립트에서는 함수도 객체이며, 함수도 값이 될 수 있다.


function a(){}     //함수는 a라는 변수에 담겨진 값.
var a = function(){}

a = {
    b : function(){
    }
}

//함수는 객체 안에 저장될 수 있다.
//b는 key, 객체 안에서 변수 역할(어떤 값을 저장하고 있기 때문) = 속성(property)
//속성에 저장된 값이 함수면 메소드라 부름.
//즉, a라는 객체에 b라는 속성이 있는데, 이 속성의 값은 함수(메소드)다.

function cal (func, num){
    return func(num)
}

function increase (num){
    return num+1;
}
alert (cal (increase, 1) );

// 위 코드는 아래와 같이 해석될 수 있다.
function cal ( func, num){
    var func = increase (num){
        return num+1
    }
}
// 즉, func(1) => 2가 출력됨.
함수는 변수, 객체에 저장될 수 있고 인자로도 사용할 수 있다.


function cal (mode){

    val funcs = {
        'plus' : function (left, right) { return left + right },
        'minus' : function (left, right) { return left - right }
    }
    return funcs[mode];
}
alert (cal('plus')(2,1));

// return funcs['plus'] 는 funcs 객체의 plus 속성의 값인 
// function(left, right) {return left+right} 메소드를 리턴시킨다.
// cal('plus')(2,1)은 cal('plus')함수의 인자 값으로 2, 1을 전달하겠다는 의미이다.
// cal('plus')는 function(left, right) {return left+right} 이므로 알럿창에 3이 뜬다.
함수를 배열의 값으로 사용할 수 있다.


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
콜백

var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
numbers.sort();    // numbers는 배열객체, sort()는 메소드(내장메소드)
console.log(numbers) // 1, 10, 2, 20, 3, 4, 5, 6, 7, 8, 9 - 문자 기준으로 정렬한 듯.
sort()
array.sort (sortfunc)
반환값 : 정렬된 배열

var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
var sortfunc = function(a, b){
    if(a > b)
        return 1;
    else if(a < b)
        return -1;
    else
        return 0;
}
var sortfunc = function(a, b){
    return a-b;    //역순은 return b-a;
}   
    numbers.sort(sortfunc);    // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20

'생활 코딩 > JAVASCRIPT' 카테고리의 다른 글

Arguments  (0) 2021.08.17
클로저  (0) 2021.08.17
유효범위  (0) 2021.08.17
객체  (4) 2021.08.16
배열  (0) 2021.08.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함