변수 생성은 3단계로 이루어진다.
* 선언 단계(Declaration phase)변수를 실행 컨텍스트의 변수 객체(Variable Object)에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다.
* 초기화 단계(Initialization phase)변수 객체(Variable Object)에 등록된 변수를 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다.
* 할당 단계(Assignment phase)undefined로 초기화된 변수에 실제 값을 할당한다.
var 은 1, 2 단계가 한번에 이루어진다.
var : 이제 사용하지 말자. 함수 레벨 스코프
let : 재할당 가능, 블록 레벨 스코프, 중복 선언 금지
const : 재할당 불가, 블록 레벨 스코프
var와 let, 그리고 const는 다음처럼 사용하는 것을 추천한다.
- ES6를 사용한다면 var 키워드는 사용하지 않는다.
- 재할당이 필요한 경우에 한정해 let 키워드를 사용한다. 이때 변수의 스코프는 최대한 좁게 만든다.
- 변경이 발생하지 않는(재할당이 필요 없는 상수) 원시 값과 객체에는 const 키워드를 사용한다. const 키워드는 재할당을 금지하므로 var, let 보다 안전하다.
변수를 선언하는 시점에는 재할당이 필요할지 잘 모르는 경우가 많다. 그리고 객체는 의외로 재할당을 하는 경우가 드물다. 따라서 변수를 선언할 때에는 일단 const 키워드를 사용하도록 하자. 반드시 재할당이 필요하다면(반드시 재할당이 필요한지 한번 생각해 볼 일이다.) 그때 const를 let 키워드로 변경해도 결코 늦지 않는다.
반응형
'개발 > javascript' 카테고리의 다른 글
Node.js 에서 Bash Script 출력(stdout, stderr) 문자열로 읽기 + 한글(EUC-KR) 인코딩 (0) | 2022.08.05 |
---|---|
React Array Toggle Element (리액트 배열 값 토글하기!) (0) | 2021.07.16 |
React useState() Object 내부 값 변경 (0) | 2021.07.05 |
[Javascript] 당신의 머리를 터지게 만들 Instanceof (0) | 2020.12.17 |
[Javascript] instance of, arguments, callee, this, new (0) | 2020.12.16 |