자바스크립트 즉시실행함수 필요한 이유

javascript에서 왜 즉시 실행함수를 사용하는 걸까요?

function temp() { test1(); test2(); } temp();
Code language: JavaScript (javascript)

위와 같이 사용하면 될 것을 굳이 아래처럼 사용하는 이유는 뭘까요?

(function () { test1(); test2(); })()
Code language: JavaScript (javascript)

자바스크립트는 왜 즉시실행함수 같은 것이 필요할까?

javascript 는 악명높은 hoisting 이라는 것이 있어서 함수 선언을 어디에 하더라도(변수도 마찬가지입니다.) 이것을 내부적으로 최상단으로 끌어올려서 어디서든지 이 변수나 함수를 사용할 수 있도록 해 줍니다.

코드가 길어지고 많은 파일들이 존재할 경우 어디에서 어떻게 호출되고 있는지 찾기 힘들게 되는 거죠.

프로그래밍 언어에는 scope 라는 것이 존재하고 어떤 변수나 함수 선언이 유효한 영역을 scope 라고 합니다. 지금 사용한 () 가 scope 인 것이죠.

( var a = 1; )
Code language: JavaScript (javascript)

위와 같은 코드에서 a라는 변수는 ()안을 벗어날 수 없습니다.

(function () { test1(); test2(); })();
Code language: JavaScript (javascript)

이런 식으로 사용할 경우 이 함수는 딱 여기서만 사용가능하게 되는 것이죠. 다른 곳에서는 이 함수를 사용할 수 없게 됩니다.

​즉시실행함수가 필요한 이유는 딱 여기서만 이 함수를 사용하고 다른 코드에서는 이 함수를 사용하지 못하게 하는 의미가 있는 것이죠.

​만약, 아래와 같이 사용할 경우

function temp() { test1(); test2(); } temp();
Code language: JavaScript (javascript)

javascript 어느 파일에서나 이 함수를 호출할 수 있게 됩니다. 어디서 어떻게 이 함수를 호출했는지 찾기 힘들게 된다는 것이죠.

​javascript 라는 언어는 원래 웹브라우저에서 간단하게 사용할 목적으로 만들어졌는데, 현재는 그 규모가 커져서 이제는 쉽게 사용하는 것보다 코드를 어떻게 관리하냐 하는 것이 더 중요하게 되었습니다.

답글 남기기

9 + 17 =