필기 내용
<배열>
<스프레드 문법>
하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만듦.(배열, 문자열, 객체...) -> ex. console.log(...[1,2,3]) => 1 2 3
객체는 이터러블이 아니기 때문에 스프레드 문법을 사용하지 못한다.
이터러블에 대해 반복하는 경우에 스프레드 문법을 사용하면 반복문을 사용하지 않아도 된다. (ex. Math.max(...arr); => 3 / foo(...[1,2,3]) => 배열을 쉽게 파라미터로 넣을 수 있다. / const arr = [...[1,2],...[3,4]] => 합쳐서 새로운 배열을 편하게 생성할 수 있다.)
<비동기 프로그래밍>
JS 엔진은 하나의 실행 컨텍스트 스택을 가짐. -> 두 개 이상의 함수를 엔진에서 함께 실행할 수 없음.
eventHandler 또한 비동기 함수이다.
// 자바스크립트 엔진
콜 스택 : 실행 컨텍스트 추가,제거되는 실행 컨텍스트 스택
힙 : 객체가 저장되는 메모리 공간
// 비동기 처리
테스크 큐 : 비동기 함수의 콜백 또는 이벤트 핸들러가 일시적으로 보관되는 영역
이벤트 루프 : 콜스택이 비어있고 테스크 큐에 대기중인 함수가 있다면 이벤트 루프는 테스크 큐에서 대기중인 함수를 콜스택으로 이동시킴
여담
드디어 비동기 프로그래밍에 들어간다. 아직 초입이지만 이전에 무작정 코드만 쓰고 넘어갔던 때에 비하면 이해하고 넘어간다는 생각이 들었다.
프로젝트에서 비동기가 얼마나 쓰일지는 모르겠지만 이해하고 쓸만큼 공부해놔야겠다.