자바스크립트 변수 선언 3가지 방법
요약
- var은 함수 스코프, let, const는 블록스코프(c와 비슷)
- var은 재선언 가능, let, const는 불가능
- let은 재할당 가능, const는 불가능(const는 선언과 동시에 초기화)
var (function scope)
- 초기 값을 지정하지 않는다면, 변수는 값이 설정될 때까지 undefined 값
- var는 함수 내부에 선언된 변수만 지역변수로 한정하며, 나머지는 모두 전역변수로 간주
- Hoisting: 자바스크립트 코드는 함수 안에 있는 모든 변수를 함수 맨 꼭대기로 끌어올린 것처럼 동작
- 변수 선언만 이루어지며 undefined로 할당됨
let (block scope)
- let은 변수가 선언된 블록, 구문 또는 표현식 내에서만 유효한 변수를 선언
- hoisting되지만 undefined 할당이 이루어지지 않음, TDZ 발생(선언 전 참조될 경우 ReferenceError)
- var과 달리 let은 전역 객체의 속성 값을 생성하지 않는다.
const (block scope)
- 블록 범위의 상수를 선언한다. (let과 같은 블록 유효범위)
- 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없음
- 따라서 처음 선언할 때 초기화를 해야함
- 보통 대문자를 사용해서 선언
Hoisting
- 함수 hoisting : 함수에서는 함수 선언만 상단으로 끌어올려지만 함수 표현식(함수 리터럴)은 그렇지 않음
- 호이스트란 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것
- 선언문은 자바스크립트 엔진 구동시 최우선으로 해석되어 호이스팅 되고, 할당문은 런타임 과정에서 이루어져 호이스팅 되지 않음
- 참고 블로그
'자바스크립트' 카테고리의 다른 글
DOM과 BOM (0) | 2021.07.16 |
---|---|
자바스크립트 Scope와 Closure (0) | 2021.07.14 |
[JS] this와 bind (0) | 2021.07.10 |
자바스크립트 비동기 처리 -callback, promise, async/await (0) | 2021.07.03 |