변수
- 프로그램의 상태를 저장하는데 사용되며, 이름과 값으로 구성.
키워드
- var
- ES5 이전에 사용되었던 변수 선언 키워드
- 함수 스코프를 갖으므로, var 변수는 함수 전체에서 유효
- let
- ES6에서 도입된 변수 선언 키워드
- 블록 스코프를 갖으므로, 선언된 중괄호 영역 내에서만 유효
- const
- ES6에서 도입된 변수 선언 키워드
- 마찬가지로 블록 스코프이며, 변수의 값을 변경할 수 없음
유효범위
-
키워드 | 유효범위 |
---|
var | 함수 스코프 |
let | 블록 스코프 |
const | 블록 스코프 |
호이스팅
- 변수나 함수의 선언이 해당 스코프의 최상단으로 올려지는 현상을 "호이스팅" 이라고 함
- "선언" 만 호이스팅되고 "초기화"는 호이스팅되지 않음
변수 호이스팅
- var 키워드만 호이스팅이되고, let,const 키워드는 호이스팅이 되지 않는다.
(개념적으로는 정확한 표현은 아니다.)
console.log(a)
var a = 1;
console.log(a)
var a;
console.log(a)
a = 1;
console.log(a)
함수 호이스팅
- 함수 선언의 경우 선언과 본문 전체가 호이스팅된다.
sayHi()
function sayHi(){
console.log('Hi')
}
sayHi()
const sayHi = function() {
console.log('Hi')
}
sayHi()
const sayHi = () => {
console.log('Hi')
}