엄지월드

값으로서의 함수 본문

Front

값으로서의 함수

킨글 2017. 7. 15. 12:11

JavaScript에서는 함수도 객체다. 다시 말해서 일종의 값이다. 거의 모든 언어가 함수를 가지고 있다.

JavaScript의 함수가 다른 언어의 함수와 다른 점은 함수가 값이 될 수 있다는 점이다. 


a 변수 안에 있는 b 속성의 값을 메소드라고 한다.



함수는 값이기 때문에 다른 함수의 인자로 전달 될수도 있다. 아래 예제를 보자.

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

alert( cal('minus')(2,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);


콜백


처리의 위임


var numbers = [ 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];

var sortfunc = function(a, b){

console.log(a, b);

if( a > b){ return 1;

}else if ( a < b ){ return -1; 

}else { return 0; }

}

console.log(numbers.sort(sortfunc));

이것을 간단하게 바꾸면

var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];

var sortfunc = function(a, b){

return a - b;

}

가 된다. 왜냐하면 큰 값에서 작은 값을 빼면 양수일꺼고 작은 값에서 큰 값을 뺴면 음수일 것이기 때문이다.

만약 문자라고 하면, 사용자가 원하는 기준을 만들고 그에 따라 정렬하면 된다.


값으로써 함수를 전달할 수 있기 때문에 원래 함수의 동작을 제어할 수 있다.

이것을 콜백이라고 한다.( 값으로 함수를 전달할 수 있다는게 중요)



비동기 처리(Ajax)

datasource.json.js

{"title":"JavaScript", "author":"jiyong"}


ajaxTest.js

<script>

$.get('./datasource.json.js', function(result){

console.log(result);

}, 'json');

</script>

위임을 하는 기법은 콜백을 통해 이루어진다.


출처 : https://opentutorials.org/course/743/6508




'Front' 카테고리의 다른 글

jQuery 자동완성 기능(autoComplete)  (0) 2017.08.22
파일 유효성 체크하는 방법  (0) 2017.07.20
유효범위  (0) 2017.07.15
js 정규식  (0) 2017.07.15
js  (0) 2017.07.15
Comments