나 개발자 할래요
변수와 상수 본문
var, let, const
1. var
ES5 이전부터 사용된 변수 선언 방식
특징
- 함수 스코프(Function Scope)
- 재선언 가능
- 재할당 가능
- 변수 호이스팅(Variable Hoisting)
2. let
ES6에서 도입된 변수 선언 방식
특징
- 블록 스코프(Block Scope)
- 재선언 불가능
- 재할당 가능
- 변수 호이스팅(Variable Hoisting)
3. const
ES6에서 도입된 상수 선언 방식, 값을 변경할 수 없는 변수
특징
- 블록 스코프(Block Scope)
- 재할당 불가능
- 재선언 불가능
- 변수 호이스팅(Variable Hoisting)
- 참조형 데이터의 불변성 아님
호이스팅(Hoisting)
선언이 코드 상단으로 끌어올려지는 현상
var는 변수를 선언과 동시에 undefined로 초기화함
console.log(greeter); // undefined
var greeter = "say hello"
위 코드가 실행되면 undefined가 뜸
실행컨텍스트의 레코드에서는 아래와 같은 단계가 이루어짐
// 생성단계
var greeter; // 1. 선언
greeter = undefined; // 2. 초기화
console.log(greeter); // undefined
// 실행단계
greeter = "say hello" // 3. 할당
let과 const는 변수를 선언만하고 초기화 하지 않음. → 접근 시 에러 발생
함수 스코프(function scope)
함수 내에서 선언된 변수는 함수 내에서만 유효하며, 함수 외부에서는 접근할 수 없음 블록 스코프의 상위 개념
블록 스코프(Block Scope)
변수가 선언된 블록(중괄호로 둘러싸인 영역, {} )과 그 하위 블록 내에서만 사용 가능
하나의 블록은 중괄호 속에서 존재하며, 중괄호 안에 있는 것은 모두 블록 범위에 해당됨
변수 이름 명명 규칙
- 숫자와 문자를 사용하되 첫 글자는 숫자가 될 수 없음
- 특수기호는 $와 _만 사용 가능
- 비 라틴계 언어의 문자나 상형문자도 사용할 수 있지만 잘 쓰이진 않음
참고한 블로그
https://enjoydev.life/blog/javascript/2-var-let-const
면접 단골 질문! 호이스팅을 곁들인 var, let, const의 차이
변수 선언 키워드인 var, let, const의 차이를 스코프와 호이스팅의 관점에서 다뤄보겠습니다.
enjoydev.life