Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트코딩테스트
- NPM
- 리액트
- CSS
- 프론트엔드
- 제로베이스
- 리액트쿼리
- stack문제
- 타입스크립트
- react
- til
- Next.js13
- next13
- leetcode문제풀이
- 자바스크립트
- JavaScript
- 자바스크립트 문제
- leetcode
- Baekjoon
- 자바스크립트 연결리스트
- 자바스크립트 문제풀이
- HTML
- 자바스크립트 문제 풀이
- JS
- 프로그래머스
- 자바스크립트 알고리즘
- 알고리즘문제풀이
- Next
- lodash
- 자바스크립트 알고리즘 문제
Archives
- Today
- Total
코드노트
자바스크립트 즉시 실행 함수 IIFE 본문
즉시 실행 함수 (Immediately Invoked Function Expression)
- 함수 정의와 동시에 즉시 호출되는 함수
- 단 한번만 호출 되며 다시 호출할 수 없다.
* 즉시 실행 함수는 ( ... ) 감싸주어야 한다. 그렇지 않으면 Error가 발생한다. 그리고 그 뒤에 ()를!
function () {...}(); // SyntaxError: Function statements require a function name
- 만약 (...)로 감싸주지 않으면 선언문 형식에도 맞지 않기 때문이다.
??? 그럼 기명함수로 호출하게 되면 Error가 발생하지 않을까?
function foo() {...}(); // SyntaxError: Unexpected token ')'
// function foo() {...};();
- 그래도 Error가 발생하는걸 볼 수 있다. / 자바스크립트 엔진이 암묵적으로 세미콜론을 자동 삽입하여 Error가 발생한다.
- 그룹 연산자의 피연산자는 값으로 평가되므로 함수 선언문, 함수 표현식을
그룹 연산자로 감싸면 함수 리터럴로 평가되어 함수 객체가 된다.
* 그외에도 먼저 함수를 평가하여 함수 객체를 생성할 수 있다면 !, + ... 연산자를 사용할 수 있다.
익명 - 즉시 실행 함수
// 익명 즉시 실행 함수
console.log(
(function () {
let a = 3;
let b = 5;
return a * b;
})()
); // 15
- 즉시 실행 함수는 익명함수를 사용하는것이 일반적이다. 그 이유는? 기명-즉시 실행 함수를 살펴보자!
기명 - 즉시 실행 함수
// 익명 즉시 실행 함수
(function foo() {
let a = 3;
let b = 5;
return a * b;
})();
console.log(foo()); // ReferenceError: foo is not defined
- 즉시 실행 함수는 단 한번 호출된다고 했다.
- 그리고 foo() 함수는 식별자로 함수 내부에서만 사용가능하다. 선언문이 아니다.
- 그렇기 때문에 즉시 실행 함수를 만들때는 함수이름을 사용하지 않아도 된다.
* 만약 재귀함수를 만든다고 하면 식별자가 필요하기 때문에 기명함수로 만들어야 한다.
(function(a, b) {
return a * b;
}(3, 5)); // 15
- 인수를 전달하여서 사용할 수도 있다.
'Code note > 자바스크립트' 카테고리의 다른 글
변수의 생명 주기 / 전역변수, 지역변수/ var의 문제점 정리, let, const (0) | 2022.12.09 |
---|---|
자바스크립트 스코프(Scope) 이해하기( 렉시컬 스코프 ) (0) | 2022.12.08 |
함수에서 객체(참조값)를 사용할때 주의해야한다.(순수함수, 비순수함수) (0) | 2022.12.06 |
자바스크립트 매개변수, 인수 (0) | 2022.12.05 |
자바스크립트 함수 정의 방법에 대하여 알고 시작하자 (0) | 2022.12.05 |