NodeJS의 이벤트 루프는 JavaScript의 싱글 스레드 약점을 개선하는 방식으로 사용됩니다. Task를 Offloading함으로써 약점을 개선합니다.
ES6 업데이트 이후 let, const를 사용합니다. 기본적인 변수 선언은 const를 사용해 재할당을 방지하고 재할당이 필요한 경우 let을 사용합니다.
호이스트란 변수의 정의가 범위에 따라 선언/초기화/할당/분리되는 것을 의미합니다.
함수 실행 전 필요한 변수값들을 모아 유효 범위 최상단에 선언하거나 함수 내에서 아래쪽에 존재하는 내용 중 필요한 값들을 끌어올리는 것입니다.
const, let은 범위가 지정된 변수를 갖습니다.
호이스팅이 실행 되기전 까지 엑세스 할 수 없는 것을 TDZ라 한다.
let, const가 무조건 호이스팅이 안된다는 뜻이 아닙니다. 스코프 진입할 때 변수가 만들어지고 TDZ가 생성됩니다. 변수가 실제 있는 위치에 엑세스 할 수 없는 곳이다.
Chrome V8엔진을 이용해 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript를 동작할 수 있도록 하는 환경(플랫폼)입니다.
서버 웹 응용프로그램을 만들 때 사용됩니다. NodeJS는 비동기식 이벤트 기반 모델을 사용해 데이터 집약적인 애플리케이션에 적합합니다.
동기와 비동기는 상황에 따라 장단점이 있습니다. 동기방식은 설계가 직관적이고 간단하지만 결과가 나올 때 까지 대기해야 합니다. 비동기 방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 진행할 수 있습니다.