Hoisting : 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미
- 스코프 단위로 이루어짐
- 선언은 호이스팅 O
- 할당은 호이스팅 X
var : 선언과 초기화가 동시에 이루어짐, 그 후 할당 (총 2단계)
- 선언하기 전에 사용 O
console.log(id); // undefined var id = "2on3"- 한번 선언된 변수를 다시 선언 O
var id = "1234" var id = "2on3" // O
let : 선언은 호이스팅에 의해 해당하는 스코프의 최상단에서 이루어지지만, 초기화는 코드를 만났을때 이루어짐 그 후 할당 (총 3단계)
- 선언하기 전에 사용 X
console.log(id); // Reference Error let id = "2on3"- 한번 선언된 변수를 다시 선언 X
let id = "1234" let id = "2on3" // Syntax Error- 실제로 호이스팅이 일어나지만 Temporal Dead Zone에 의해 let에 값을 할당하기 전에 사용 X(let이 초기화 되지 않으므로)
const : 선언, 초기화, 할당이 모두 동시에 이루어짐 (총 1단계)
- let과 거의 동일하며 재할당 불가능한 변수
Scope
var: Function Scope
function 안에서 선언될 경우, 그 안에서만 사용 가능 (var의 경우 function을 제외한 if, for, switch의 안에서 선언되었을 경우 그 외부에서도 사용 가능하다.)let: Block Scope(function, if, for, try 등)
초기화
undefined 값이 할당될 때
'Javascript' 카테고리의 다른 글
| Pre Commit 정의, 사용법 + Husky, lint-stage(eslint) 적용하기 (0) | 2022.06.29 |
|---|---|
| 객체(Object) (0) | 2022.03.18 |
| Callback Function, 함수 표현식, 함수 선언문 (0) | 2022.03.15 |
| nullish (0) | 2022.03.15 |
| null, undefined (0) | 2022.03.14 |