(Javascript) 즉시실행함수

즉시실행함수 (Immediately-invoked function expression)


즉시실행함수

자바스크립트의 즉시실행함수에 대해 알아보자.

즉시실행함수는 함수를 정의함과 동시에 실행되는 함수를 말한다. 형태는 아래와 같다.

// 두가지 모두 같은 기능 수행
(function() {
    console.log("Hello world")
})()

(function() {
    console.log("Hello world")
}())

함수선언 바로 뒤에 괄호 () 를 추가하여 즉시실행함수를 만들 수 있다.

일반적으로 함수는 함수 정의, 변수에 함수 저장 과정을 거쳐 실행되지만, 즉시실행함수는 함수가 선언되자마자 실행된다. 괄호안에 값을 넣어 함수에 인자로 넘겨줄수도 있다.

(function() {
  var name = "Jae"
  console.log(name)
}())

// Jae
(function(score) {
    console.log(score)
})(95)

// 95

위 함수는 별도의 과정없이 코드를 실행하자마자 실행된다.

사용 이유

그렇다면 즉시실행함수를 사용하는 이유는 무엇일까?

  • 초기화에 사용된다.

    즉시실행함수는 선언되자마자 실행되기 때문에 같은 함수를 다시 호출할 수 없다. 그런 특성때문에 초기화 부분에 많이 사용된다.

  • 전역 변수 선언을 피하기 위해 사용된다.

    자바스크립트에서 변수는 기본적으로 전역 유효 범위를 가진다. 하지만 함수 내부에서 정의된 변수들은 함수 내에서만 유효하다. 이 점을 활용해 외부에서 함수 내부의 변수에 접근이 불가능하도록 함으로써 변수의 충돌을 방지할 수 있다. 특히 라이브러리 사용시, 즉시실행함수 내부에 라이브러리 코드를 추가하면 전역컨텍스트에 영향을 주지 않게되어 라이브러리간의 충돌을 피할 수 있다.