🎉 함수의 다양한 형태
콜백 함수
- 코드를 통해 명시적으로 호출하는 함수가 아니라, 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 호출되는 함수이다.
즉시 실행 함수 (immediate functions)
(function (location){
console.log('지금 위치는? => ' + location);
})('경기도');
함수 정의와 동시에 실행하는 함수이다.
위의 코드처럼 즉시 실행 함수를 작성할 수 있으며, 특징은 최초 한 번의 실행만을 필요로하는 초기화 코드 부분에 적당하다는 점이다.
즉시 실행 함수 내부에 변수들은 함수 외부에서 접근할 수 없다.
내부 함수 (inner function)
function parent(){
var a = 100;
var b = 200;
// 내부 함수 정의
function child() {
var b = 300;
console.log(a); // print >> 100
console.log(b); // print >> 300
}
child();
}
parent();
child(); // print >> Uncaught ReferenceError: child is not defined
자바스크립트에서는 함수 코드 내부에서 다시 함수 정의가 가능한데, 이것을 내부 함수라고 부른다.
내부 함수는 일반적으로 자신이 정의된 부모 함수 내부에서만 호출이 가능하다.
내부 함수는 자신을 둘러싼 부모 함수의 변수에 접근이 가능하다.
❗ 부모 함수가 내부 함수를 외부로 return하면, 부모 함수 밖에서도 내부 함수를 호출할 수 있다. (아래 예제)
function parent() {
var a = 100;
var child = function () {
console.log(a);
}
return child;
}
var inner = parent();
inner(); // print >> 100
함수를 리턴하는 함수
var self = function () {
console.log('a');
return function () {
console.log('b');
}
}
me = self(); // print >> a
me(); // print >> b
자바스크립트에서 함수는 일급 객체이므로 함수 자체를 리턴할 수 있다.
자바스크립트의 언어적 유연성을 보여주는 예이다.
📖 출처
송형주, 고현준 지음, 『인사이드 자바스크립트』, 한빛미디어(2014)
'개발 > JavaScript' 카테고리의 다른 글
JavaScript] 자바스크립트 뿌시기 (함수도 객체다) (0) | 2021.01.17 |
---|---|
JavaScript] 자바스크립트 뿌시기 (함수 생성) (0) | 2021.01.17 |
JavaScript] 자바스크립트 뿌시기 (기본 타입과 표준 메서드, 연산자) (0) | 2021.01.07 |
JavaScript] 자바스크립트 뿌시기 (배열) (0) | 2021.01.07 |
JavaScript] 자바스크립트 뿌시기 (프로토타입) (0) | 2021.01.05 |