[javascript] 호이스팅으로 인한 에러 발생 가능성과 let, const의 해결 방법

자바스크립트에서 호이스팅(hoisting)은 변수와 함수 선언이 스코프 상단으로 끌어올려지는 동작을 말합니다. 이는 코드 실행 전에 변수 및 함수 선언이 메모리에 저장되는 것을 의미합니다. 호이스팅은 코드를 읽기 쉽고 이해하기 쉽도록 도와줍니다. 그러나 가끔 호이스팅으로 인해 의도치 않은 에러가 발생할 수 있습니다.

호이스팅으로 인한 문제

console.log(myVar); // undefined
var myVar = 5;

위 코드에서는 myVar 변수가 선언되기 전에 참조되었지만, 에러는 발생하지 않습니다. 이는 호이스팅으로 변수 선언이 코드 상단으로 끌어올려지기 때문입니다.

let과 const의 도입

ES6에서 letconst 키워드가 도입되었는데, 이를 사용하여 호이스팅으로 인한 문제를 해결할 수 있습니다.

console.log(myLet); // ReferenceError: myLet is not defined
let myLet = 5;

letconst는 블록 스코프(block-scoped)를 가지므로 호이스팅으로 인한 문제를 줄일 수 있습니다.

결론

호이스팅은 자바스크립트의 특성 중 하나이지만, 변수 선언을 실제 사용하는 부분에 가깝게 하고, letconst를 사용하여 호이스팅으로 인한 문제를 방지하는 것이 좋습니다.

참조: MDN web docs