JS 중요 개념(let vs var)

Category
스터디 노드 React
Status
Published
Tags
JavaScript
Study
Description
Published
Slug
let, const, var
 

var vs let

 
var은 한번 선언한 변수를 다시 선언할 수 있음
let은 한번 선언한 변수를 다시 선언할 수 없음.
 
 
notion image
 
var의 실제 동작은 아래와 같기 때문
notion image
 
var로 선언한 모든 변수는, 코드가 실제로 이동하진 않지만,
최상위로 끌어올려진 것 처럼 동작함 → 호이스팅
 
하지만 console은 undefined를 찍는데,
선언은 호이스팅 되지만, 할당은 호이스팅 되지 않기 떄문임.
 
 

let은 error가 나는데,

그렇다고 let이 호이스팅이 되지 않는건 아님.
notion image
 
let과 const도 호이스팅이 되는데,
notion image
 
하지만, var와 다르게 오류가 나는 이유는 TDZ떄문임
notion image
이 TDZ영역에 있는 것들은 사용할 수 없음.
let과 const는 TDZ의 영향을 받음. → 할당을 하기 전에는 사용할 수 없음.
notion image
 
notion image
 
호이스팅은 스코프 단위로 일어나는데,
 
여기서 스코프는 함수 내부임.
 
let으로 선언한 두번째 변수가
호이스팅을 일으킴.
notion image
notion image
let은 선언되면서 호이스팅이 일어나지만,
초기화 단계는 실제 코드에 도달했을때 되지 때문에 에러가 나는 것임
 
notion image
 
블록 스코프는 모든 코드블록에서 선언된 변수는
선언블록 내부에서만 유효하고, 외부에서는 접근할 수 없음
→ 코드블록 내부에서 선언한 변수는 지역변수임
 
if문 안에서 사용한 var는 if문 밖에서도 사용이 가능하지만,
if문 안에서 사용한 let과 const는 if문 밖에서 사용할 수 없음,
 
 
 
notion image
 
 
notion image
 
notion image