var, let, const 차이는 크게 호이스팅, 스코프, 재선언, 재할당에서 나타난다
호이스팅(hoisting)이란?
호이스팅(hoisting)이란? 자바스크립트에서 변수와 함수의 선언이 해당 범위의 최상단으로 끌어올려지는 동작을 말한다해당 범위는 스코프를 말한다작성 위치와 상관 없이 변수 선언과 함수 선
08x0040x.tistory.com
스코프(Scope)란?
스코프란? 변수가 접근할 수 있는 코드의 영역을 말한다 전역 스코프파일 전체에 걸쳐 변수를 사용할 수 있는 영역예시var globalVar = "I'm global!";function test() { console.log(globalVar); // "I'm global!" (전역
08x0040x.tistory.com
재선언, 재할당
에 대해 설명하기 전에
- 선언
- 변수를 메모리에 등록하는 과정
- 예시
let x; // 변수를 선언하지만 값은 없음
- 초기화
- 변수를 선언할 때 자바스크립트 엔진이 메모리 공간을 확보하고, 기본 값을 할당하는 단계
- var은 선언과 동시에 자동으로 undefined로 초기화된다
- let과 const는 선언되지만 초기화는 변수 선언문이 실제로 실행될 때 이루어진다
초기화 과정이 끝나기 전까지는 일시적 사각지대에 있다 - 예시
let y; // 선언, 초기화 X (TDZ 상태) console.log(y); // ReferenceError y = 10; // 초기화 및 할당
- 할당
- 변수가 선언되었거나 초기화된 이후에 값을 대입하는 과정
- 초기화는 변수가 메모리에 잡히고 사용 가능하게 만드는 단계지만, 할당은 그 변수에 값을 넣는 것을 의미한다
- 예시
let a; // 선언 (초기화 X) a = 10; // 초기화 및 할당 (초기화는 선언문 실행 시) a = 20; // 값 변경 (새로운 값 할당)
초기화와 할당의 차이
초기화는 변수가 선언된 후에 메모리에 자리를 차지하고 사용할 준비가 되는 과정이다
할당은 초기화된 변수에 값을 넣는 과정이다
| 키워드 | 스코프 | 호이스팅 | 재할당 | 재선언 |
| var | 함수 스코프 | 선언과 초기화 함께 (undefined) |
가능 | 가능 |
| let | 블록 스코프 | 선언만 호이스팅 (일시적 사각지대에 있음) |
가능 | 불가능 |
| const | 블록 스코프 | 선언만 호이스팅 (일시적 사각지대에 있음) |
불가능 | 불가능 |
const로 선언된 변수의 경우 재할당이 불가능하지만,
객체나 배열일 경우 내부 속성이나 요소를 변경하는 것은 가능하다
'Javascript' 카테고리의 다른 글
| this 키워드 (0) | 2024.10.13 |
|---|---|
| 클로저(Closure)란? (1) | 2024.10.05 |
| 함수 선언문과 함수 표현식 (0) | 2024.10.04 |
| 스코프(Scope)란? (0) | 2024.10.01 |
| 호이스팅(hoisting)이란? (6) | 2024.10.01 |