-
값으로서의 함수와 콜백 - 함수지향 | 생활코딩Javascript/ECMAScript 2009 (ES5) 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” , 함수의 내부의 어느 특정시점에 실행한다.
# 처리의 위임
- 함수의 인자로 함수를 전달할 수 있다. 값으로 전달된 함수는 호출될 수 있기 때문에, 전달 받은 함수의 동작을 바꿀 수 있다.
# 비동기 처리
- 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다.
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
arguments - 함수지향 | 생활코딩 (0) 2020.02.04 클로저 - 함수지향 | 생활코딩 (0) 2020.02.03 유효범위 - 함수지향 | 생활코딩 (0) 2020.02.02 배열 ... 정규표현식 -자바스크립트 기본 | 생활코딩 (0) 2020.02.02 소개 ... 배열 - 자바스크립트 기본 | 생활코딩 (0) 2020.02.01