값으로의 함수 : 자바스크립트에서는 함수도 객체, 일종의 값이다.
예제
//
function a(){}
위 예제에서 함수 a는 변수 a에 담겨진 값이다. 또한 함수는 객체의 값으로 포함될 수 잇다. 이렇게 객체의 속성 값으로 담겨진 함수를 메소드라 부른다.
//
a = {
b:function(){
}
};
함수는 값이기 때문에 다른 함수의 인자로 전달될 수도 있다.
//
function cal(func,num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
alert(cal(increase, 1));
alert(cal(decrease, 1));
아래 예제를 통해 함수는 함수의 리턴값으로도 사용 가능한 것을 알 수 있다.
예제
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));
아래 예제를 통해 함수는 배열값으로도 사용 가능한 것을 알 수 있다.
예제
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);
콜백 : 함수가 수신하는 인자가 함수인 경우. 콜백은 비동기 처리에서도 유용하게 사용된다.
예제
// 문자로 정렬
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber)); // [1,10,2,20,3,4,5,6,7,8,9]
// 배열 정렬
function sortNumber(a,b){
// 위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.
return b-a;
}
var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
alert(numbers.sort(sortNumber)); // array, [20,10,9,8,7,6,5,4,3,2,1]
비동기 처리
예제
//datasource.json.js
{"title":"JavaScript","author":"egoing"}
//demo1.html
<!DOCTYPE html>
<html>
<head>
<script src="jquery-3.2.1.min"></script>
</head>
<body>
<script type="text/javascript">
$.get('http://localhost/javascript/datasource.json.js', function(result){
console.log(result);
}, 'json');
</script>
</body>
</html>