📌 var 키워드로 선언한 변수의 문제점
1. 변수 중복 선언 허용
- var 키워드로 선언한 변수는 중복 선언이 가능하기 때문에 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생함
2. 함수 레벨 스코프
- var 키워드로 선언한 변수는 오로지 함수 코드 블록만을 지역 스코프로 인정하기 때문에 함수 외부에서 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨
3. 변수 호이스팅
- 변수 호이스팅에 의해 var 키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있어 가독성을 떨어뜨리고 오류 발생의 여지가 있음
📌 let 키워드
- 변수 중복 선언 금지
let 키워드로 이름이 같은 변수를 중복 선언하면 문법 에러가 발생함
- 블록 레벨 스코프
let 키워드로 선언한 변수는 모든 코드 블록을(함수 , if문, for문, while문, try/catch문 등) 지역 스코프로 인정하기 때문에 지역 스코프에서 선언한 변수를 전역에서 참조할 수 없음
- 변수 호이스팅
let 키워드는 변수 호이스팅이 발생하지 않는 것처럼 동작함 (let 키워드도 변수 호이스팅이 발생함)
let 키워드로 선언한 변수는 선언 단계와 초기화 단계로 분리되어 진행돼 런타임 이전에 암묵적으로 선언 단계가 실행되고 변수 선언문에 도달했을 때 초기화 단계가 실행됨
- 전역 객체와 let
let 키워드로 선언한 변수는 전역 객체의 프로퍼티가 아님
let 전역 변수는 보이지 않는 개념적인 블록(전역 렉시컬 환경의 선언적 환경 레코드) 내에 존재함
📌 const 키워드
- 선언과 초기화
const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화해야 함
const 키워드로 선언한 변수도 블록 레벨 스코프를 가지며 변수 호이스팅이 발생하지 않는 것처럼 동작함
- 재할당 금지
const 키워드로 선언한 변수는 재할당이 금지됨
- 상수
const 키워드로 선언된 변수에 원시 값을 할당하면 재할당이 금지되므로 할당된 값을 변경할 수 없기 때문에 프로그램 전체에서 공통으로 사용하는 상수로 사용하기에 좋음
- const 키워드와 객체
const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있음
참고문헌 및 출처 : 모던 자바스크립트 Deep Dive (이웅모)
'JavaScript > 모던 자바스크립트 딥다이브' 카테고리의 다른 글
[JS] 생성자 함수에 의한 객체 생성 (0) | 2024.04.14 |
---|---|
[JS] 프로퍼티 어트리뷰트 (0) | 2024.04.14 |
[JS] 전역 변수의 문제점 (0) | 2024.04.07 |
[JS] 자바스크립트 연산자 (0) | 2023.03.20 |
[JS] 자바스크립트 데이터 타입 (0) | 2023.03.07 |
댓글