October 10, 2021
과거엔 var
만 사용할 수 있었습니다. 그런데 var
의 스코프는 블록 레벨 수준이 아니죠. 개발자들은 var
도 블록 레벨 스코프를 가질 수 있게 여러가지 방안을 고려하게 됩니다. 이때 만들어진 것이 '즉시 실행 함수 표현식(immediately-invoked function expressions)'입니다. 즉시 실행 함수 표현식은 IIFE
라고 부르기도 합니다.
즉시 실행 함수 표현식을 요즘에는 자주 쓰지 않습니다. 하지만 오래된 스크립트에서 만날 수 있기 때문에 즉시 실행 함수 표현식이 무엇인지 알아 둘 필요가 있습니다.
var
로 선언한 변수는 let
이나 const
로 선언한 변수와 다른 두 가지 주요한 특성을 보입니다.
var
로 선언한 변수는 블록 스코프가 아닌 함수 수준 스코프를 갖습니다.var
선언은 함수가 시작되는 시점(전역 공간에선 스크립트가 시작되는 시점)에서 처리됩니다.이 외에도 전역 객체와 관련된 특성 하나가 더 있는데, 이에 대해선 다음 챕터에서 다루도록 하겠습니다.
var
만의 특성은 대부분의 상황에서 좋지 않은 부작용을 만들어냅니다. let
이 표준에 도입된 이유가 바로 이런 부작용을 없애기 위해서입니다. 변수는 블록 레벨 스코프를 갖는 게 좋으므로 이제는 let
과 const
를 이용해 변수를 선언하는 게 대세가 되었습니다.