변수
let
const
var
var 와 let은 크게 다르지 않음
다른점: var는 한번 선언된 변수를 다시 선언할 수 있다.

let은 문제가 됨
var는 선언하기 전에 사용할 수 있다.


undefined가 출력된 이유: 선언은 호이스팅되지만 할당은 호이스팅되지 않기 때문.
let과 const도 호이스팅되긴 함.
호이스팅이란?
: 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동
그런데 왜 var처럼 실행되지 않고 에러를 내는걸까?
->TDZ때문. TDZ 영역에 있는 변수들은 사용할 수 없다. let과 const는 TDZ 영향을 받는다. 할당하기 전에는 사용할 수 없다. 이는 코드를 예측가능하게 하고 잠재적 오류를 줄일 수 있다.



호이스팅은 스코프 단위로 일어남. 여기서 스코프는 함수 내부

변수 생성과정
1. 선언 단계
2. 초기화 단계
3. 할당 단계
초기화: undefined를 할당 해주는 단계
var는 1. 선언 및 초기화 단계, 2. 할당 단계
let은 1. 선언 단계 2. 초기화 단계 3. 할당 단계
const는 1. 선언 + 초기화 + 할당
var는 함수 스코프,
let, const는 블록 스코프
블록 스코프는 모든 코드블록 내에서 선언된 변수는 코드블록 내에서만 유효하며 외부에서는 접근할 수 없다.
코드블록 내부에서 선언한 변수는 지역변수
코드블록: 함수, if문, for문, while문 try/catch문
함수 스코프는 함수 내에서 선언한 변수만 지역변수가 됨.
if 문 내에서 var로 선언한 변수는 if 문 밖에서도 사용이 가능. 하지만 let, const는 if문 내에서만 사용할 수 있다.
var도 함수 내에서 선언되면 함수 밖에서 사용할 수 없다. 유일하게 벗어날 수 없는 스코프가 함수라고 생각하면 된다.
var는 사용하지 않고 let, const 사용 권장됨.
'frontend > JavaScript' 카테고리의 다른 글
| 자바 스크립트 중급<생성자 함수> (0) | 2025.01.27 |
|---|---|
| 소수점 버리기 (정수 변환) 몫 구하기 (0) | 2025.01.24 |
| 자바스크립트 기초(3) <함수, (0) | 2025.01.24 |
| 자바스크립트 기초(2)<기본 연산자, 비교 연산자, 조건문, 논리 연산자, 반복문, switch 문> (0) | 2025.01.23 |
| 자바 스크립트 기초(1)<변수, 자료형, 대화상자, 형변환> (0) | 2025.01.23 |