상세 컨텐츠

본문 제목

TIL 11일차

TIL

by 리액트바오 2021. 9. 9. 20:37

본문

원시 자료형과 참조 자료형 그리고 스코프와 클로저에 대해 공부했다. 최근 매일 페어와 코플릿 또는 과제를 함께 풀어오다가 오래간만에 혼자 공부하는 날이어서 나도 모르게 아니,, 대놓고 자유함? 을 느꼈다. 이 자유함이 안 좋은 쪽으로 작용하여 집중을 잘 하지 못했다. 오늘 주어진 일정 시간이 다 갈때쯤 급하게 집중을 하곤 했다. 뒤 늦게 짧은시간에 이해하기에 어려운 내용이라는것을 알게 되었다. 이런 기분이 싫었고 내 자신에게 떳떳하지 못했다. 다시는 이러지 말아야지! 주어진 일정 시간에 최선을 다해야지!! 

 

let, const, var 의 차이

변수 선언

변수의 선언은 var, const, let 가 있는데 ES6에서 const와 let이 추가되었다.

var 키워드의 문제점은 크게 세 가지가 존재한다.

  1. 변수 중복 선언 가능하여, 예기치 못한 값을 반환할 수 있다.
  2. 함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역 변수로 된다.
  3. 변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환한다.

ES6에서 나온 let과 const 키워드는 위의 세 가지 문제점을 해결했다.

1. 변수 중복 선언 불가

-let 키워드로는 변수 중복 선언이 불가하지만, 재할당은 가능하다.

-const가 let과 다른 점은 변수 선언과 초기화를 동시에 진행해야만 한다. let과 같이 변수 재선언이 불가능 하며 더 나아가 변수 재할당도 불가능 하다.

단, 재할당의 경우 원시 값은 불가능 하지만 객체는 가능하다.

2. 블록 레벨 스코프

let, const 키워드로 선언한 변수는 모두 코드 블록(함수, if, for, while, try/catch 문 등)을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다.

3. 변수 호이스팅

호이스팅이란 "스코프 안에 있는 선언들을 모두 스코프의 최상위로 끌어올리는 것" 이다.

자바스크립트 인터프리터가 코드를 해석할 때 함수의 선언, 할당, 실행을 모두 나눠서 처리하기 때문이다.

 

let과 const는 모두 블록 스코프를 사용 하고 있다. 따라서 블록 내부에서 선언한 변수는 모두 지역변수로 취급되어 블록 내부에서 선언한 변수들은 참고할 수 가 없다. let과 const 모두 호이스팅 되는데 이것을 이해하기 위해서는, Temporary Dead Zone에 대해 알아야 한다.

 

결론은

  1. 스코프는 최대한 좁게 만드는 것이 좋다. 따라서, var 키워드 보다 let과 const 키워드를 사용하며, 변경하지 않을 값이라면 let 보다는 const 키워드를 사용하는 것이 안전하다.
  2. var let const는 모두 호이스팅 된다.
  3. const 는 선언과 동시에 초기화, 할당까지 이루어진다.

 

Today's Key🔑

  • var, let, const는 모두 호이스팅 된다. 
  • 스코프는 최대한 좁게 만드는 것이 좋다.
  • 호이스팅이란 "스코프 안에 있는 선언들을 모두 스코프의 최상위로 끌어 올리는 것" 이다.

'TIL' 카테고리의 다른 글

TIL 13일차  (0) 2021.09.10
TIL 12일차  (0) 2021.09.09
TIL 10일차  (0) 2021.09.07
TIL 9일차  (0) 2021.09.03
TIL 8일차  (0) 2021.09.02

관련글 더보기