[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