드디어 2020년 버전의 자바스크립트를 다룬 완벽가이드 7판을 구매
es5까지만 다루던 지난 버전과 가장 다른 부분이 let과 const를 통한 변수 선언 같다
번역도 훨씬 자연스럽다
ES6 이후 자바스크립트는 let과 const로 변수를 선언한다
var는 특이한 놈
let과 const는 블록 레벨 스코프를 갖고, 재선언이 불가능
es6 이후의 변수 선언은 let 키워드를 사용한다
가능하면 변수 선언 시 초기값을 할당하는 것이 좋은 프로그래밍 습관이다
변수에 초기값을 설정하지 않으면 값을 할당할 때까지 undefined
상수 선언 시에는 const를 사용한다
const는 선언 시 반드시 값을 할당하여 초기화 해줘야한다
상수는 선언 후 값을 변경할 수 없다
상수로 선언 시에는 변수명을 모두 대문자로 사용해야한다
const 키워드 사용에 대해서는 두 가지 견해가 있다
책의 저자인 데이비드 플래너건은 1번을 따른다고 함
2번으로 사용 시에는 의도하지 않은 실수를 사전에 방지할 수 있다는 장점이 있다
반복문의 루프 변수에도 let을 사용한다 - for(let i=0; i<len; i++){} 에서의 i
의외로 for/in과 for/of 문에서는 const를 사용할 수 있다
for문에서는 사용 불가 - 선언된 변수가 iterable하지 않기 때문
반복문에서의 루프 변수는 중괄호 밖에 선언되고 존재할 수 있지만
스코프는 반복문의 블록 내부이다
ES6에서 선언과 할당을 합친 일종의 복합 문법을 도입했다
이를 구조 분해 할당(destructuring assignment)이라고 부른다
우측에는 배열이나 객체 등 구조를 갖는 값
좌측에는 하나 이상의 변수 이름으로 배열이나 객체 리터럴 문법 사용
오른쪽 값에서 하나 이상의 값을 추출(분해) 해서 왼쪽의 변수에 할당한다
구조 분해 할당은 for문에서 사용 가능
let obj = { x: 1, y: 2};
for(cont [name, value] of Object.entries(o)){
console.log(name, value); // "x 1", "y 2"
}
let [x, y] = [1]; // y == undefined
let [,x,,y] = [1, 2, 3, 4]; // x == 2, y == 4
let [x, ...y] = [1, 2, 3, 4]; // y == [2, 3, 4]
let [a, [b, c]] = [1, [2, 3], 4]; // b == 2, c == 3