티스토리 뷰
- 콜백함수(CallBack function)
파라미터로 전달되는 함수
function add(a,b,callback){
var result = a + b;
callback(result);
}
- 함수를 호출했을 때 또 다른 함수를 파라미터로 전달하는 방법
함수를 파라미터로 전달하는 경우 대부분은 비동기 프로그래밍, 연산이 끝났을 때 파라미터로 전달한 함수가 실행 될 수 있다면 그 시점에 겨로가를 처리할 수 있으므로, 효율
- 함수 안에서 값을 반환 할 때 새로운 함수를 만들어 반환하는 방법
Ex)
function add(a,b,callback){
var result = a + b;
var cnt = 0;
callback(result);
var history = function(){
cnt ++;
return a + '+' + b + ' = ' + result;
}
return history;
};
<설명> 1. add(10,10,function(result))로 add 함수를 호출한다. 그리고 add 함수에서는 result에 a+b의 값을 대입한다. callback(result); 를 호출하여 console.log의 값을 출력 시킨다.
2. add(10,10,function(result))를 호출한 쪽의 반환값으로 history의 함수 객체를 반환 시킨 값이 add_history 의 변수에 들어가게된다.
3. 최종적으로 호출한 add()함수쪽의 내부함수가
callback(result)에 의해 먼저 호출이 먼저 되어 console.log()결과가 먼저 나오게 되고, history의 함수 객체를 출력 시키면return a + '+' + b + ' = ' + result; 의 값이 출력 되게 된다.
var add_history = add(10,10,function(result){
console.log('파라미터로 전달된 콜백함수 호출됨');
console.log('더하기 (10,10)의 결과 : %d',result);
});
console.log('결과 값으로 받은 함수 실행 결과' + add_history());
console.log('결과 값으로 받은 함수 실행 결과' + add_history());
console.log('결과 값으로 받은 함수 실행 결과' + add_history());
- 클로저(closure)란?
위의 예제에서, 반환된 함수를 반복해서 실행하면 conut 변수의 값이 증가하는것을 볼 수 있는데 반환된 history 함수가 실행 될때는 이미 add함수가 메모리에서 접근 할 수 없는 상태가 된 다음이다. 따라서, history 함수가 실행 될 때에는 add함수 안에 만들어진 count 변수도 같이 접근 할 수 없어야 하는데
하지만, 이와같이 함수 안에서 새로운 함수를 만들어 반환하는 경우에는 예외적으로 접근을 허용한다.
'Node.js' 카테고리의 다른 글
[node.js]프로토 타입 2 (0) | 2017.09.17 |
---|---|
[node.js]프로토 타입 이해하기 (0) | 2017.09.17 |
[node.js]배열 이해하기 (0) | 2017.09.17 |
[node.js]자바 스크립트의 객체와 함수 이해하기 (0) | 2017.09.17 |
[node.js]Express - get() 라우터 Rendering (0) | 2017.09.17 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 복습
- C langauge
- 초보자를 위한 C언어 300제
- node.js
- 텐서플로우
- 안드로이드
- db
- MVC
- node
- TensorFlow
- Algorigm
- programming
- 스프링
- 알고리즘
- 감자개발자
- Spring
- BFS
- 백준
- 개발하는 관광이
- 감자코딩
- Android
- 프로그래밍
- 코드엔진
- Controller
- 백준알고리즘
- 노드
- 머신러닝
- 리버싱
- 학교
- C언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함