호출 스택
- 스택(stack)은 먼저 들어간 놈이 가장 나중에 나오는 구조(LIFO)이다. (프링글스를 생각해보면 쉽다)
- 항상 맨 처음에는 anonymous가 쌓인다.
- 호출 스택이 텅 비면 실행이 완료됨
- 비동기를 분석할 때는 이벤트 루프까지 같이 봐야한다.
이벤트 루프
- 호출 스택, 백그라운드, 테스크 큐, 메모리로 이루어져 있는 루프이다.
- 비동기 함수를 만나면 백그라운드에 비동기 함수 안에 들어있던 작업이 들어가게 된다. 그리고 호출 스택의 작업과 백그라운드의 작업은 동시에 실행 된다.
- 그리고 이벤트 발생 후 호출되어야 할 콜백 함수들이 순서대로 기다리는 곳이 테스크큐이다. -> 호출스택이 비어있을 때 호출스택으로 하나 하나 전달 된다
- 테스크큐는 순서대로 작업을 실행하지만 우선순위(Promise, then, catch, process.nextick)에 따라 순서가 바뀔 수 있다.
var, let, const
- var은 거의 쓸 일이 없다. 함수 스코프라는 것만 알아두자.
- let, const: 블록스코프
템플릿 문자열
- 백틱(``)을 사용해서 안에 변수를 넣거나 줄바꿈등을 유지할 수 있는 방식이다. 개인적으로 리액트 쓸 때 굉장히 많이 썼다. 문자열 사이에 +를 써주는 방식이 가독성도 떨어지고 실수할 가능성도 높아서 백틱을 주로 사용한다.
화살표 함수
- 화살표 함수는 function을 완전히 대체하지는 못한다. this가 달라지기 때문
- 화살표 함수의 this는 부모의 this를 물려받는다.
구조분해 할당
- 객체나 배열의 값을 다른 변수에 할당할 때 쓰는 방식
const obj = {
a: "aaaaa",
b: "bbbbb",
c: "ccccc",
};
const {a,b,c} = obj;
const arr = [1,2,3,4,5];
const [x,y,,,z] = arr;
클래스
- 클래스는 프로토타입을 깔끔하게 만들어주는 것이다. 어렵게 생각할 필요없다.
프로미스(Promise)
- 프로미스는 내용이 실행 되었지만 결과를 아직 반환하지 않은 객체이다.
- 성공했을 때, 실패했을 때 상황이 있는데 .then에서는 성공했을 때, .catch에서는 실패했을 때를 실행한다.
- 콜백함수에서는 결과를 바로 반환해버리니까 중간에 다른 코드가 올 수 없었다. 그게 왜 불편한가 하겠지만 코드를 분리할 수 있는데 안하는 것과 코드를 분리할 수 없는 것은 천지차이다. (마치 오픈이 안되는 차를 타는 것과 오픈카를 타는데 굳이 오픈을 안하는 것의 차이)
Async/await
- 발음에 주의하자 어씽크가 아니라 에이씽크이다ㅋㅋ
- await이 then의 역할이라고 보면 된다. resolve(성공) 했을 때의 값을 반환한다.
- await을 쓰려면 async 함수 안에서 써야 한다.
- reject 되는 때를 방지하기 위해서 try/catch문을 써야 한다.
Map/Set
- map은 일반 객체 리터럴{}과 비슷하고 Set은 일반 배열[]과 비슷하다
- map에서 매력적이라고 느낀 부분은
-> .size를 통해서 객체 속성 개수를 간단하게 알아낼 수 있다는 점
-> 반복문 돌리기가 쉽다는 점
-> .has를 통해 값이 있는지 쉽게 알아낼 수 있다는 점
- set은 중복값을 제거할 때 유용하다
null 병합과 옵셔널 체이닝
- null 병합(??)은 null과 undefined를 거를 때 많이 쓴다.
0 ?? 3 //0이 된다
null ?? 3 //3이 된다
- 옵셔널 체이닝(?.)은 앞 객체가 null이나 undifined일 상황에서 에러가 나오는 경우를 막음
FormData
- 이미지, 영상, 파일을 보낼 때 axios에서는 formdata에 넣어서 보내야 한다.
'타임어택 > [nodejs] 제로초 9기-노드교과서' 카테고리의 다른 글
[섹션 0] 강의 들어가기 전 기본 개념 (0) | 2024.02.17 |
---|