호이스팅(Hoisting)

solsolsol·2022년 3월 18일
0

JavaScript

목록 보기
3/17

호이스팅(Hoisting)

JS에 변수를 담아줄 수 있는 요소에는 var, const, let 세 가지가 있다. 하지만 더이상 var를 사용하지 않는다. 그 이유가 바로 호이스팅 때문이다.

쉽게 말해 호이스팅은 위로 끌어올려 지는 것 이다.

console.log(fruit)
var child = "사과"

라는 코드를 작성했을 경우 에러가 발생하는 것이 아니라 undefined라는 값이 출력된다. 이럴 경우 소스 코드가 길어지게 되면 의도치 않게 다른 값을 출력하는 경우가 생길 수 있기 때문에 var 보다는 const, let 사용을 권장한다.

그렇다면 const와 let은 호이스팅이 일어나지 않을까?
답은 '아니'다. const와 let도 호이스팅이 일어난다. 하지만 var와는 다르게 TDZ(Tempral Dead Zone)으로 분류되기 때문에 변수가 할당되기 전까지는 접근이 불가능해 지고 오류가 출력된다.

console.log(fruit)
const fruit = "사과" 
// Uncaught SyntaxError: Identifier 'fruit' has already been declared

위와 같은 맥락으로 함수를 만들 때도 함수 선언식보다는 표현식이나 화살표 함수로 적어주는 것이 호이스팅을 예비할 수 있다.

0개의 댓글