콜백 함수

  • 콜백 함수 : 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수
    ⭐ 함수의 괄호를 포함하여 전달하면 단순히 함수가 호출될 뿐 매개변수에 전달되지 않음
function callFunctionTenTimes(otherFunction){
	// 전달받은 함수를 10번 호출
	for(var i=0;i<10;i++){
		otherFunction();	// 콜백함수 실행
	}
}

// 선언적 함수
function justFunction(){
	document.write('Happy Day!<br>');
}

// 함수 호출
callFunctionTenTimes(justFunction);
		// justFunction() : 함수를 매개변수에 전달하는 것이 아니라 함수를 실행함

 

  • 익명함수를 매개변수로 전달
callFunctionTenTimes(function(){
	document.write('Hello World!<br>');
});

 

 

내부 함수

  • 내부 함수 : 함수 내부에 선언한 함수
function f(){
	// 내부 함수
	function g(){
		document.write('g is called');
	}
	// 내부 함수 호출
	g();
}
f();

 

  • 내부 함수 - 지역 변수
function f(){
	// 변수 선언 및 초기화
	var n=123;
	// 내부 함수
	function g(){
		document.write('n is ' + n + '<br>');
		document.write('g is called');
	}
	// 내부 함수 호출
	g();
}
f();

 

  • 내부 함수 - return
function f(){
	// 변수 선언 및 초기화
	var n=123;
	// 내부 함수
	function g(){
		document.write('n is ' + n + '<br>');   // 변수 n 을 사용중이므로 소멸 안됨
		document.write('g is called');
	}
	return g;	// 내부 함수 반환
}

var m = f();
document.write(m + '<br>');

// 함수 호출
m();

 

 

클로저(Closure)

  • 클로저 : 함수가 종료되어도 지역변수가 소멸되지 않고 남아있는 현상
function outerFunction(name) {
	// 지역변수
	var output = '안녕하세요. ' + name + ' 님!';

	// 내부함수
	return function(){
		// 경고창
		alert(output);    // 내부함수에서 지역변수 사용
	};
}

var message = outerFunction('홍길동');
message();