오늘부터 모던 자바스크립트 딥다이브 스터디 1일 차 날이다. 웬만하면 다 안다고 생각했던 개념들 중에서도 다시 보니 헷갈리고 더 찾아봐야 할 점들이 많이 보였다.
매니지드 언어 VS 언매니지드 언어
1. 매니지드 언어(Managed Language): C언어 같이 개발자가 명시적으로 메모리를 할당하고 해제하기 위해 malloc()과 free() 같은 low-level 메모리 제어기능을 제공함. 개발자가 직접 메모리를 제어할 수 있어 높은 수준의 최적화도 가능하지만 그만큼 오류가 발생할 위험도도 높다.
2. 언매니지드 언어(Unmanaged Language): 자바스크립트가 여기에 해당되며 메모리의 할당 및 해제를 위한 메모리 기능 관리 기능을 언어 차원에서 담당하고 개발자가 관여할 수 없다. 더 이상 사용하지 않는 메모리의 해제는 가비지 콜렉터가 수행한다. 어느 정도의 일정한 생산성을 확보할 수 있어 안정적이나, 성능 면에서 어느 정도 손실을 감수해야 한다.
let과 const의 호이스팅
var 키워드만 호이스팅이 가능하다고 알고 있는 경우가 많으나, let과 const도 호이스팅이 가능하다. let과 const를 통해 변수를 선언하면 선언 단계까지는 이루어지나, 초기화되기 이전에 호출하면 오류가 발생한다. 우리는 이 오류를 보고 호이스팅이 안 되는 구나라고 생각할 수 있으나 이 경우도 호이스팅이 이루어진 것으로 본다.
/*
TDZ: 변수가 선언된 위치에서부터 변수가 초기화 되기 전까지 영역
*/
console.log(value); // 참조 에러 발생.
let value = 10;
'TIL' 카테고리의 다른 글
[2024.05.10] 내배캠 React 과정의 시작과 챌린지반 (0) | 2024.05.10 |
---|---|
[2024.05.09] 내배캠 두번째 팀 프로젝트의 마지막 (0) | 2024.05.09 |
[2024.05.07] vsCode에서 깔끔하게 git log 보기 (0) | 2024.05.07 |
[2024.05.06] 모던 JS 딥다이브 스터디 준비 (0) | 2024.05.06 |
[2024.05.05] 프로그래머스. 나누어 떨어지는 숫자 배열 (0) | 2024.05.05 |