TIR: 완벽가이드 let과 const를 이용한 변수 선언과 구조분해할당 - 220724

Lumpen·2022년 7월 25일
0

TIR

목록 보기
22/40

드디어 2020년 버전의 자바스크립트를 다룬 완벽가이드 7판을 구매
es5까지만 다루던 지난 버전과 가장 다른 부분이 let과 const를 통한 변수 선언 같다
번역도 훨씬 자연스럽다

변수 선언

ES6 이후 자바스크립트는 let과 const로 변수를 선언한다
var는 특이한 놈

let과 const를 이용한 선언

let과 const는 블록 레벨 스코프를 갖고, 재선언이 불가능

let

es6 이후의 변수 선언은 let 키워드를 사용한다

가능하면 변수 선언 시 초기값을 할당하는 것이 좋은 프로그래밍 습관이다
변수에 초기값을 설정하지 않으면 값을 할당할 때까지 undefined

const

상수 선언 시에는 const를 사용한다
const는 선언 시 반드시 값을 할당하여 초기화 해줘야한다

상수는 선언 후 값을 변경할 수 없다
상수로 선언 시에는 변수명을 모두 대문자로 사용해야한다

const를 사용한다는 것

const 키워드 사용에 대해서는 두 가지 견해가 있다

  1. 상수로 사용할 값에만 const를 써야한다는 의견
  2. 선언 후 바뀌지 않는 모든 변수를 const로 사용하자는 의견

책의 저자인 데이비드 플래너건은 1번을 따른다고 함
2번으로 사용 시에는 의도하지 않은 실수를 사전에 방지할 수 있다는 장점이 있다

반복문의 루프 변수에도 let을 사용한다 - for(let i=0; i<len; i++){} 에서의 i

  • 개인적으론 let을 사용하면 개별 실행 컨텍스트가 생기기 때문에 일반적인 경우에는 var를 사용하는 편이 어떨지..

의외로 for/in과 for/of 문에서는 const를 사용할 수 있다
for문에서는 사용 불가 - 선언된 변수가 iterable하지 않기 때문

반복문에서의 루프 변수는 중괄호 밖에 선언되고 존재할 수 있지만
스코프는 반복문의 블록 내부이다

var를 이용한 변수 선언

  • 함수 레벨 스코프를 갖는다
  • 함수 내부에 선언되지 않은 var (전역 변수로 선언된 var)는 전역 객체의 프로퍼티가 된다
    - let과 const로 선언된 전역 변수는 전역 객체의 프로퍼티가 되지 않는다
  • 재선언 가능
  • 호이스팅 단계에서 선언과 초기화가 함께 일어나기 때문에 선언 전에 사용 가능
    -> let을 사용해야하는 큰 이유중 하나

구조 분해 할당

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
profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글