728x90
320x100
오늘은 즉시 실행 함수, 재귀 함수, 중첩 함수, 콜백 함수, 순수 함수, 비순수 함수 중 즉시 실행 함수에 대해 정리해보겠다.
1. 즉시 실행 함수(IIFE, Immediately Invoked Function Expression)의 정의와 특징
즉시 실행 함수란, 함수 정의과 동시에 호출되어 실행되는 함수를 말하며, 단 한 번만 호출 할 수 있다.
따라서 보통 익명 함수로 많이 정의하여 활용한다. 어차피 기명으로 함수를 사용하더라도 재호출이 불가능하기 때문이다.
이름 짓기가 얼마나 귀찮은 일인가... Simple is best.
2. 표현
즉시 실행 함수는 그룹 연산자로 감싸서 표현하는 것이 일반적이다. 즉, 괄호()로 감싸줘야한다.
(function () {
const a = 1;
const b = 10;
return a + b;
}());
앞선 포스팅에서 말했듯, 함수 선언문을 통한 함수 정의는 반드시 기명 함수로만 가능하다. 그러나 위에서는 익명 함수로 표현되어 있다. 이는 JS에서 위 코드를 함수 선언문이 아닌 다른 것으로 받아들이고 있기 때문에 가능하다.
정확히는 위 코드에서 함수를 표현하는 코드는 함수 선언문이 아니라 함수 리터럴로 평가된다.
그리고 즉시 실행 함수는 반드시 함수 리터럴로 평가될 수 있게 작성해야만 한다. 그렇지 않으면 에러가 뜬다.
그렇다면 어떻게 함수 리터럴로 평가되게 만드느냐? 그 대표적인 방법이 바로 그룹 연산자로 감싸는 방법이다.
따라서 아래와 같은 직관적이지 못한 방법도 이론적으로는 가능하다.
+function () {
const a = 1;
const b = 10;
return a + b;
}();
3. 활용
const fullName = (function () {
const firstName = 'Lionel';
const lastName = ' Messi';
return firstName + lastName;
}());
console.log(fullName) // 'Lionel Messi'
위 코드처럼 즉시 실행 함수는 값을 반환할 수 있다.
const fullName = (function (firstName,lastName) {
return firstName + lastName;
}('Lionel',' Messi'));
console.log(fullName) // 'Lionel Messi'
위 코드처럼 함수의 인자 설정한 뒤 인자를 받아올 수도 있다.
728x90
반응형
'Learning-Log > Computer Science' 카테고리의 다른 글
[JS/Array] 배열 Method 및 배열 고차 함수 정리 (0) | 2022.06.13 |
---|---|
[JS/반복문] 반복문 및 반복문을 대체할 수 있는 기능 6가지 총 정리 : for 문, while 문, do ... while 문, forEach 메서드, for ... in 문, for ... of 문 (0) | 2022.06.13 |
[JS/함수] 화살표 함수 1분만에 이해하기 : 함수(Function)을 정의하는 4가지 방법 (0) | 2022.06.07 |
[크롬 확장 프로그램] CrxMouse 버그 발견 (0) | 2022.06.03 |
[Node.js/MongoDB] Mongoose에서 ObjectId 값을 제대로 못 받아오는 현상 (0) | 2022.05.30 |