let, const는 ES6에 추가된 문법으로 재선언은 가능하지만, let은 재할당 가능, const는 재할당 불가능이라는 특징을 가집니다. let, const를 통해 좀 더 예측 가능한 코드 작성이 가능합니다.
변수의 정의가 선언(Declaration) / 초기화(Initialize) / 할당 분리되는 것을 의미합니다.
함수안에 있는것을 모두 끌어올려 유효범위 최상단에 선언하는 것을 의미합니다.
즉 함수 내에서 아래쪽에 존재하는 내용 중 필요한 값을 끌어올려 처리하고 메모리 변화는 없습니다.
const, let은 범위가 지정된 변수를 갖습니다.
스코프에 진입할 때 변수가 만들어지고, TDZ가 생성됩니다.
코드 실행에 변수가 실제 있는 위치에 도달할 때까지 엑세스할 수 없는 것입니다.
브라우저에서 Javascript를 해석하듯 서버에서 Javascript를 동작할 수 있도록하는 플랫폼입니다.
Node.js는 비동기로, API를 실행하고 완료되기까지 기다리지 않고 다른 API를 수행합니다.
단일 스레드 모델을 사용하고, 서버가 멈추지 않고 반응할 수 있어 확장성을 키웠습니다. 하지만 너무 많은 작업량이 수행될 경우 단일 스레드의 단점이 나타나고 성능이 떨어지기 시작합니다.
데이터를 실시간으로 처리하는 SPA, 입출력이 잦은 기능을 개발할 때 효율적입니다.
Promise 사용 시 콜백지옥에 빠질 수 있고, Async, Await을 사용하는 것이 코드 작성에 편리합니다. 또한 try, catch를 사용해 쉽게 에러핸들링이 가능해집니다.
두 개 모두 배열에 변화를 줍니다. 하지만 forEach의 경우 원본 배열에 변화를 줘 배열을 출력하고, map은 기존 배열은 유지한 상태에서 변화를 주고 새로운 배열로 반환합니다.
내부함수가 선언됐을 때, 자신이 선언된 환경을 기억하고 Scope밖에서 선언됐다해도 접근할 수 있는 함수를 말합니다.
쉽게 얘기해, 함수 내부에서 사용된다 해도 외부에서 가져와 사용할 수 있는 함수입니다.