1 var 키워드로 선언한 변수의 문제점
- ES5까지는 var로만 변수선언 가능했었음 → 많은 문제 야기
1.1 변수 중복 선언 허용
- var 키워드로 선언한 변수는 중복 선언이 가능함
→ 만약 동일한 이름의 변수가 이미 선언된 것을 모르고 변수를 중복선언하면서 값까지 할당했다면 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생함
1.2 함수 레벨 스코프
- var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정함
→ 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역변수가 됨.
- 함수 레벨 스코프는 전역 변수를 남발할 가능성을 높힘.
→ 이로인해 의도치 않게 전역 변수가 중복 선언되는 경우가 발생함
1.3 변수 호이스팅
- var 키워드로 변수선언시 변수 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작함
→변수 호이스팅에 var 키워드로 선언한 변수는 변수 선언문 이전에 참조가능함
2 let 키워드