Javascript/ECMAScript 2009 (ES5)

값으로서의 함수와 콜백 - 함수지향 | 생활코딩

AGAL 2020. 2. 3. 21:45
반응형

[출처 : https://opentutorials.org

값으로서의 함수

 

JavaScript에서는 함수도 객체다. JavaScript의 함수가 다른 언어의 함수와 다른 점은 함수가 값이 될 수 있다는 점이다.

 

함수는 변수의 값이 될 수 있다.

function a(){}    // var a = function(){}; 과 동일

함수는 객체의 값으로 포함될 수 있다

a = {
  b : function() {}    // 'b'는 속성(property), 'function(){}'은 메소드(method)
}

함수는 값이기 때문에 다른 함수의 인자로 전달 될 수도 있다.

function cal (func, num) { return func(num) }
function increase(num) { return num+1 }
cal(increase, 1);

함수는 함수의 리턴 값으로 사용할 수 있다.

function cal(mode) {
	var func = {
    	'plus' : function(left, right){ return left + right }
    }
    return func[mode];
}
calc('plus')(2,1)    // calc('plus') == function(left, right) { ... }

함수는 배열의 값으로 사용할 수 있다.

var process = [
	function(input) { return input + 10;},
	function(input) { return input * input;}
];
var input = 1;
for (var i = 0; i < process.length; i++) {
	input = process[i](input);
}
alert(input)    // 121

※ 1급 객체 (first class object)

  - 변수(variable)에 담을 수 있다

  - 인자(parameter)로 전달할 수 있다

  - 반환값(return value)으로 전달할 수 있다

 

※ 1급 함수 (first class function)

  - 런타임(runtime) 생성이 가능하다

  - 익명(anonymous)으로 생성이 가능하다

 

# 자바스크립의 함수는 1급 객체인 동시에 1급 함수다.


콜백

 - 객체의 상태 변화(이벤트)가 발생한 후 수행될 함수를 의미. 즉, 인자 전달 시 함수를 전달

 - 콜백함수는 전달 받은 즉시 바로 실행이 될 필요가 없다. 함수의 이름처럼 “called back” , 함수의 내부의 어느 특정시점에 실행한다.

 

# 처리의 위임

- 함수의 인자로 함수를 전달할 수 있다. 값으로 전달된 함수는 호출될 수 있기 때문에, 전달 받은 함수의 동작을 바꿀 수 있다.

 

# 비동기 처리

  - 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다. 

 

반응형