2019년 5월 16일 목요일

#4 JavaScript 함수특성과 콜백


값으로의 함수


1. JS에서는 함수도 변수에 담을수 있는 객체


function a(){}     :      a에 함수가 담겼다
     ॥
var a = function(){} 


2. 객체 내의 메소드로 사용


a = {
    b:function(){
    }
};

b => key (속성)
function => value(메소드)


객체 안에 저장된 함수는 메소드라고 부른다


3. 다른 함수의 인자, 리턴값으로 사용


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));



4. 배열의 원소로 사용


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);


이처럼
변수, 매개변수, 리턴값으로 사용될수 잇는것을



first-class citizen,object, entity 등으로 부른다


콜백함수로의 사용


콜백함수 : 다른 함수의 인자로 사용되거나
이벤트에서 호출이 되는 함수들을 콜백함수라고 한다


[].sort() 와 같은 것을 내장메소드, 빌트인 메소드라 해준다


sort라는 애는 sortNumber를 받아서 정렬 기준으로 정렬해준다

function sortNumber(a,b){
      return b-a; 
}                      //return값이 양수인지 음수인지 0인지에 따라서 정렬을 해준다
                         a-b ==> a가 b보다 클때 :오름차순
                         b-a ==> 내림차순


var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber())

즉 여기서 sortNumber()은 콜백함수가 되고
콜백이 가능한것은 JS의 함수가 값으로 사용 될수 있기 때문이다.



+비동기

콜백은 비동기 처리때 유용하게 동작할수 잇는데

동기(시간순서) :

글작성 -> 이메일발송(3시간) -> 작성완료

비동기(순서 무시):
글작성 -> 이메일발송(예약) ->작성완료 (금방끝남)

그리고 예약된 작업(3시간)을 백그라운드 처리함

Ajax(asynchronous javascript and XML)

page reload 없이 처리해주는 것(다른 작업을 같이 할수 있음)


댓글 1개:

가장 많이 본 글