
201
7
장
스코프
대부분의 독자, 특히 다른 언어에 익숙한 독자들은 이 예제를 힐끗 보고 필자가
if
문의 블록
스코프 안에 새 변수
x
를 만들려 한다고 생각할 수 있지만, 그런 일은 일어나지 않습니다.
var
를 쓰면 혼란스럽고 쓸모없는 코드가 생길 수 있는데 왜 이런 키워드를 만들었는지 의문이
든다면
let
키워드가 만들어진 이유를 이해한 겁니다. 물론
var
를 써도 명확하고 이해하기 쉬
운 코드를 작성할 수 있지만, 혼란스럽고 불명확한 코드를 작성할 위험은 여전합니다.
var
를
뜯어고치면 기존 코드가 모두 망가지므로 대신
ES6
에서
let
을 새로 만든 겁니다.
필자는
let
대신
var
를 써서 더 좋은 코드나 더 명확한 코드를 쓰는 방법을 도저히 떠올릴 수
없습니다. 달리 말해
var
에는
let
보다 나은 점이 전혀 없습니다. 필자를 포함해, 자바스크립트
커뮤니티에서는 대부분
let
이 언젠가
var
를 완전히 대체할 것으로 예상합니다. 언젠가는
var
가 최종적으로 폐기될 날이 올 수도 있습니다.
그럼 왜
var
와 호이스팅을 이해해야 할까요? 이유는 두 가지입니다.
ES6
를 어디에서든 쓸 수
있으려면 아직 시간이 더 필요하므로
ES5
로 트랜스컴파일을 해야 합니다. 기존 코드는 전부
ES5
로 작성됐다는 건 말할 필요도 없겠죠. 따라서 아직은
var
가 어떻게 ...