*이 필기는 웹 프로그래밍 튜토리얼에서 보고 작성합니다.
1. var 키워드로 선언한 변수의 문제점
- 변수 중복 선언 허용
- 함수 레벨 스코프 - 함수 레벨 스코프는 전역 변수를 남발할 가능성을 높임
- 변수 호이스팅 - 변수 호이스팅으로 인해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작함.
2. let 키워드
- 변수 중복 선언 금지 - let 키워드로 중복 선언을 하면 문법 에러가 발생함
- 블록 레벨 스코프 - 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등)을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다.
- 변수 호이스팅 - let 키워드에서는 변수 호이스팅이 발생하지 않는 것처럼 동작한다.
console.log(foo); // foo is not defined
let foo;
이처럼 let 키워드로 선언한 변수를 변수 선언문 이전에 참조하면 참조 에러가 발생한다.
우선 var 키워드를 생각해보자. var 키워드로 선언한 변수는 런타임 이전에 선언 단계와 초기화 단계가 한번에 진행된다. 따라서 선언문 이전에 참조해도 undefined라는 값이 출력될 수 있다.
반면에 let 키워드는 런타임 이전에 선언 단계가 진행되고 선언문에 도달했을 때 초기화 단계가 진행된다.
따라서 초기화 단계가 실행되기 전에 참조를 하면 참조 에러가 발생한다.
3. const 키워드
- 선언과 초기화 - 선언과 동시에 초기화를 해야한다.
- 재할당 금지
- 상수 - 일반적으로 상수의 이름은 대문자를 쓰고 여러 단어로 이루어진 경우는 언더스코어(_)로 구분한다.
- const 키워드와 객체 - const 키워드로 선언된 변수에 객체를 할당했을 때, 값을 변경할 수 있다.
4. var, let, const
- ES6을 사용한다면 var 키워드는 사용하지 않는다.
- 재할당이 필요하면 let 키워드를 사용한다.
- 변경이 발생하지 않는 값과 객체는 const 키워드를 사용한다.
여기까지 입니다 - 틀린 점이 있다면 꼭 지적해주세요!