원시 자료형과 참조 자료형 그리고 스코프와 클로저에 대해 공부했다. 최근 매일 페어와 코플릿 또는 과제를 함께 풀어오다가 오래간만에 혼자 공부하는 날이어서 나도 모르게 아니,, 대놓고 자유함? 을 느꼈다. 이 자유함이 안 좋은 쪽으로 작용하여 집중을 잘 하지 못했다. 오늘 주어진 일정 시간이 다 갈때쯤 급하게 집중을 하곤 했다. 뒤 늦게 짧은시간에 이해하기에 어려운 내용이라는것을 알게 되었다. 이런 기분이 싫었고 내 자신에게 떳떳하지 못했다. 다시는 이러지 말아야지! 주어진 일정 시간에 최선을 다해야지!!
변수의 선언은 var, const, let 가 있는데 ES6에서 const와 let이 추가되었다.
var 키워드의 문제점은 크게 세 가지가 존재한다.
ES6에서 나온 let과 const 키워드는 위의 세 가지 문제점을 해결했다.
-let 키워드로는 변수 중복 선언이 불가하지만, 재할당은 가능하다.
-const가 let과 다른 점은 변수 선언과 초기화를 동시에 진행해야만 한다. let과 같이 변수 재선언이 불가능 하며 더 나아가 변수 재할당도 불가능 하다.
단, 재할당의 경우 원시 값은 불가능 하지만 객체는 가능하다.
let, const 키워드로 선언한 변수는 모두 코드 블록(함수, if, for, while, try/catch 문 등)을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다.
호이스팅이란 "스코프 안에 있는 선언들을 모두 스코프의 최상위로 끌어올리는 것" 이다.
자바스크립트 인터프리터가 코드를 해석할 때 함수의 선언, 할당, 실행을 모두 나눠서 처리하기 때문이다.
let과 const는 모두 블록 스코프를 사용 하고 있다. 따라서 블록 내부에서 선언한 변수는 모두 지역변수로 취급되어 블록 내부에서 선언한 변수들은 참고할 수 가 없다. let과 const 모두 호이스팅 되는데 이것을 이해하기 위해서는, Temporary Dead Zone에 대해 알아야 한다.
결론은