값으로의 함수
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. 배열의 원소로 사용
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라는 애는 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 없이 처리해주는 것(다른 작업을 같이 할수 있음)
5252-
답글삭제