728x90
hoist : 끌어(감아) 올리다.
자바스크립트는 유연한 언어인 만큼, 실행되지 않아야 할 코드가 예상하지 못한 결과로 도출될 경우가 종종 있습니다.
그 중 하나가 "var Hoisting(호이스팅)"입니다.
var 호이스팅이란 var를 통한 선언문을 실행 시 스코프의 최상단으로 올려 할당하는 것을 의미합니다.
아래 예시를 보고 이 동작이 왜 문제가 되는지 let과 비교하여 생각해 보세요.
순차적으로 보았을 때, 초기화, 선언되지도 않은 변수를 불러오면 당연히 에러가 떠야하는 것이 일반적입니다.
let 선언 시, 생각대로 에러가 발생하는 것을 보여주고 있습니다.
하지만 var은 호이스팅이 발생하면서 undefined 혹은 100을 뱉고 있습니다.
프로젝트에서 이를 인지하지 못하고 실수가 곁들인 코드를 짠 경우, var 호이스팅으로 인하여 예상하지 못한 값의 변경 혹은 결과를 초래할 수 있습니다.
에러를 발생하지도 않으니 문제를 파악하지도 못하고 삽질을 할 수 있습니다..
번외로 var은 호이스팅 뿐만 아니라 블럭 스코프에도 작용하지 않으니 더더욱 유의하셔야 합니다.
특별한 의도가 아니라면 var 대신 let을 사용하는 것을 추천드립니다.
728x90
'Basic > JavaScript' 카테고리의 다른 글
[JavaScript] 나머지 매개변수 - 함수 인수 유동적으로 받기 (0) | 2023.04.02 |
---|---|
[JavaScript] 문자형(string) 실수(숫자) 데이터, 세자리마다 콤마 구현하기 (0) | 2023.03.30 |
JSDoc 을 이용하여 JavaScript 파일 문서화하기 (0) | 2022.10.23 |
[JavaScript] 생성자(constructor)로 객체 생성하기 (0) | 2022.08.01 |
[JavaScript] 객체(Object)의 접근, 요소 추가 (0) | 2022.07.31 |