인프런 커뮤니티 질문&답변
호이스팅 안쓰는게 좋나요?
해결된 질문
작성
·
22
0
호이스팅은 웬만하면 안쓰는게 좋나요?
ESLint로 호이스팅 막는 경우도 있고, 호이스팅이 안티 패턴이라는 경우도 있네요.
답변 2
1
효빈 Hyobin
지식공유자
안녕하세요 🙂 질문 감사합니다.
호이스팅 자체가 "쓰면 안되는 기능"은 아닙니다.
자바스크립트 엔진의 동작 방식이고, 항상 일어나기 때문입니다.
다만 호이스팅을 의도적으로 적용하는 것은 추천드리지 않습니다.
코드의 가독성이 떨어질 뿐만 아니라 여러 오류를 발생할 수 있기 때문입니다.
코드를 작성할 때에는 신경을 써서 명확한 스코프를 만드는 방식이 더 안전합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Sec님.
자바스크립트에서 호이스팅에 대해 궁금하신 점을 설명드리겠습니다.
호이스팅(Hoisting)
호이스팅은 자바스크립트의 독특한 기능으로, 함수 선언과 변수 선언이 실제 코드 실행 전에 상단으로 끌어올려지는 것처럼 동작하는 것을 말합니다. 이로 인해 코드 내 위치에 관계없이 함수를 호출할 수 있는 장점이 있습니다. 하지만, 때때로 호이스팅은 예기치 못한 동작을 일으킬 수 있어 주의가 필요합니다.
호이스팅 사용에 대한 견해
장점:
- 코드의 흐름을 아래로 자유롭게 작성할 수 있어 함수 호출을 유연하게 관리할 수 있습니다.
- 코드의 흐름을 아래로 자유롭게 작성할 수 있어 함수 호출을 유연하게 관리할 수 있습니다.
단점:
- 코드의 가독성이 떨어질 수 있고, 변수의 선언 위치가 명확하지 않아 예기치 않게
undefined가 반환될 수 있습니다.
- 특히
let과const와 같은 블록 스코프에 관련된 변수 선언 시 호이스팅이 적용되더라도 초기화되지 않으므로, Temporal Dead Zone(TDZ)로 인해 잠재적 오류가 발생할 수 있습니다.
- 코드의 가독성이 떨어질 수 있고, 변수의 선언 위치가 명확하지 않아 예기치 않게
권장 사항
- ESLint: 여러 개발자들이 협업하는 프로젝트에서는 코딩 스타일을 통일시키기 위해 ESLint 같은 도구를 사용해 호이스팅을 막습니다. 이는 코드의 가독성을 높이고 오류를 줄이는 데 도움이 됩니다.
- 명시적 선언: 함수 표현식과
let/const를 사용해 명확히 변수와 함수를 선언하는 것이 복잡한 코드에서는 더 안전할 수 있습니다.
관련 질문에 대해 더 많은 정보를 원하신다면 아래의 유사한 질문 링크를 참고해 주시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





