자바스크립트 공부를 하다보니 계속 hoisting
이라는 단어가 등장한다.
hoisting
이 함수, var 변수의 선언을 위로 끌어올리는 역할을 한다는 것은 알았는데 도대체 왜 이런 개념이 존재하는 것일까?
브랜든 아이크의 트윗 - hoisting
인터넷에 많은 설명이 존재하지만 설명의 출처나 내용이 모호한 부분이 많은 것 같아서 자바스크립트의 창시자인 브랜든 아이크의 트윗을 빌려왔다.
요약하자면 함수 hoisting
을 통해 선언 전 호출을 가능하게 했고, 이 과정에서 의도치 않은 var hoisting
이 발생했다고 한다.
이를 해결하기 위해 ES6
에서 let
개념이 등장하게 되었고, 기존에 허용되던 선언 전 호출 등의 동작을 방지하는 use strict
키워드가 ES5
에서 등장하게 된다.
참고 자료
: [자바스크립트]Hoisting - Diana Lee