
참조하며 메모한 자료 (내돈내산) : 모던 자바스크립트 핵심 가이드 - 알베르토 몬탈레시
1.1 var, let const의 차이
var
함수 스코프에 종속되는 반면에
for 루프(블록 스코프) 내에서 var 키워드로 변수를 선언하면 이 변수를 for 루프 밖에서도 사용할 수 있다

첫 번째 예제 - var의 값이 블록 스코프를 벗어나도 for 루프 외부에 접근
두 번쨰 예제 - var가 함수 스코프 내에 제한되어 함수 외부에 접근할 수 없다
let
let 키워드로 선언된 변수는 블록 스코프로 종속된다
변수가 선언된 블록과 그 하위 블록 내에서만 사용할 수 있다


const
const 키워드로 선언된 변수도 블록 스코프에 종속되지만,
let과 차이점은 재할당을 통해 갑싱 변경될 수 없고 다시 선언될 수 없다

참고로 const로 선언된 변수가 꼭 불변이라는 의미가 아니다

객체의 내용을 변경할 수 없게 const 객체를 고정할 수 있다
단 객체의 값을 변경하려고 시도할 때마다 자바스크립트가 오류를 띄워주지 않는다

1.2 TDZ
TDZ : temporal dead zone , 일시적 비활성 구역

var는 정의되기 전에 접근할 수 있지만 그 값에는 접근할 수 없다
let과 const는 정의하기 전에 접근할 수 없다
var, let, const 모두 다른 소스에서 읽을 수 있는 내용임에도 불구하고 호이스팅(hoistiong)의 대상이 된다
코드가 실행되기 전에 처리되고 해당 스코프가 어떻든 상단으로 올라간다
var는 변수 선언되기 전에도 접근이 가능하다 (정의 전에는 undefined 값임)
let은 변수가 선언될 떄까지 일시적으로 비활성 구역인 TDZ에 머무른다
따라서 초기화 전에 변수에 접근하면 오류가 발생한다
undefined 값을 얻는 거솝다 오류가 발생하는 편이 코드 디버깅이 쉽다
왜냐 나중에 var로 선언될 때 undefined 값인채로 넘어가는 것보다
차라리 미리 오류를 미리 발견하고 나중에 크게 생길 오류 방지하기 위해서이다
그래서 var 말고 let과 const를 많이 쓴다
1.3 var, let, const를 적재적소에 쓰는 법
개발자 커뮤니티에서도 이들 각각 어디에 써야하는지 명확하지 않고,
각자마다 쓰는 방식이 다르기 때문에 훗날 스스로 연구해고 어떤 방햐잉 좋은지 생각해봐야 한다
책 저자는 기본적으로 const를 사용하고
값을 재할당해야 하는 경우에만 loet로 쓰는 것이 좋다고 생각한다
1) 마티아스 바인스 (https://mathiasbynens.be/notes/es6-const)
- 기본적으로 const를 사용하자
- 재할당이 필요한 경우에만 let을 사용하자
- var ES6에서 절대 사용하지 않는다
2) 카일 심슨 (https://me.getify.com/)
- 여러 큰 스코프에서 공유하기 위한 최상위 변수에는 var를 사용한다
- 작은 스코프의 로컬 변수에는 let을 사용한다
- 코드 작성이 어느 정도 진행된 후에만 let을 const로 리팩터링한다. (변수 재할당 막아야 하는 경우라는 것이 확실해야 한다)
'자료 따라쓰기 > 모던 자바스크립트 핵심 가이드' 카테고리의 다른 글
| 23 타입스크립트 기초 (0) | 2023.07.13 |
|---|---|
| 02 화살표 함수 (2) | 2023.04.03 |
| 00 자바스크립트 기초 (3) | 2023.03.21 |