[15장] QnA

junjeong·2023년 9월 12일
0
post-thumbnail

1️⃣ let과 const는 마치 호이스팅 되지 "않는 것처럼" 보인다. 라고 적으신 이유가 있을텐데 이에 대한 부분을 구체적으로 설명해달라.

먼저 호이스팅이란 해당 변수 선언문이 자신의 스코프의 가장 선두로 올라가는 현상을 의미하는데 var는 호이스팅 현상과 함께 undefined로 동시 초기화되어 선언문 이전에 참조가 일어나도 오류가 안나지만 let과 const는 참조오류가 난다. 이것이 마치 호이스팅이 안되는 것처럼 보인다라고 표현하신 이유이다. 하지만 let과 const도 호이스팅은 이루어진다. 다만 초기화가 동시에 일어나지 않아 참조할 값이 없어 오류가 나는 것이다. 그렇다면 초기화는 언제 되는가? 실제 코드가 선언되는 줄에서 역시 undefined로 초기화된다. 이는 다시 말하면 let과 const는 "선언"과 "초기화"의 시점이 다르다는 것을 이해해야 한다.

2️⃣ 변수의 스코프는 최대한 좁게 만들어야 한다고 하는데 보다 구체적인 예시나 기법이 따로 존재하는가??

  • es6를 사용한다면 반드시 let 또는 const를 사용한다. es6가 아니어서 var를 써야 하는 상황이라고 할지라도 이는 최대한 지양한다.
  • 함수나 변수가 한번 실행되고 죽어버리는 즉시실행함수(IIFE)를 이용한다.
  • 독자적인 스코프를 제공하는 모듈 프로그래밍을 이용한다.
profile
Whether you're doing well or not, just keep going👨🏻‍💻🔥

0개의 댓글