[javascript] 호이스팅으로 인한 에러 발생 가능성과 let, const의 해결 방법
자바스크립트에서 호이스팅(hoisting)은 변수와 함수 선언이 스코프 상단으로 끌어올려지는 동작을 말합니다. 이는 코드 실행 전에 변수 및 함수 선언이 메모리에 저장되는 것을 의미합니다. 호이스팅은 코드를 읽기 쉽고 이해하기 쉽도록 도와줍니다. 그러나 가끔 호이스팅으로 인해 의도치 않은 에러가 발생할 수 있습니다.
호이스팅으로 인한 문제
console.log(myVar); // undefined
var myVar = 5;
위 코드에서는 myVar
변수가 선언되기 전에 참조되었지만, 에러는 발생하지 않습니다. 이는 호이스팅으로 변수 선언이 코드 상단으로 끌어올려지기 때문입니다.
let과 const의 도입
ES6에서 let
과 const
키워드가 도입되었는데, 이를 사용하여 호이스팅으로 인한 문제를 해결할 수 있습니다.
console.log(myLet); // ReferenceError: myLet is not defined
let myLet = 5;
let
과 const
는 블록 스코프(block-scoped)를 가지므로 호이스팅으로 인한 문제를 줄일 수 있습니다.
결론
호이스팅은 자바스크립트의 특성 중 하나이지만, 변수 선언을 실제 사용하는 부분에 가깝게 하고, let
과 const
를 사용하여 호이스팅으로 인한 문제를 방지하는 것이 좋습니다.
참조: MDN web docs