함수가 값이 될 수 있으며, 변수나 객체에 담길 수 있음.
메소드
객체의 속성에 저장된 함수
a = {
b: function () { //b:속성(메소드b)
}
}
다른 함수의 인자로 전달될 수도 있음.
function cal(func, num) {
return func(num) //함수 호출
}
//리턴값으로 전달 가능
function cal(mode){
var funcs = {
'plus' : function(left, right) { return left+right }
'minus' : function(left, right) { return left-right }
}
return funcs[mode];
}
배열의 값으로 사용 가능.
값으로 사용될 수 있는 특성을 이용하면 함수의 인자로 함수를 전달할 수 있음.
<body>
<script type="text/javascript">
var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
var sortf = function (a, b) {
console.log(a, b);
return a-b;
/*if (a > b) {
return 1;
} else if (a < b) {
return -1;
} else return 0;*/
};
numbers.sort(); //sort는 numbers객체에 있는 것이므로 메소드
console.log(numbers.sort(sortf));
</script>
</body>
이때 sortf가 callback function.
sort가 동작하는 방식을 sortf로 바꿀 수 있음.
콜백은 비동기처리에서도 유용하게 사용됨. 작업이 완료된 후 처리해야할 일을 콜백으로 지정하면 해당 작업이 끝났을때 미리 등록한 작업을 실행하도록 할 수 있음.