본문 바로가기

Node.js

ES2015+

리터럴:
코드 규칙에 따라 표현된 값. 값을 표현하는 방식. 비구조화 할당
const example = {a: 123, b: {c: 135, d: 146}}; const a = example.a;
const d = example.b.d;
-> 비구조화 할당을 하면
const {a, b: {d}} = example; arr = [1, 2, 3, 4, 5];
const x = arr[0];
const y = arr[1];
const z = arr[4];
-> 비구조화(구조분해) 할당을 하면
const [x, y, , , z] = arr; 객체는 키가 똑같아야 하고 배열은 자리(순서)가 똑같아야 한다.
this를 사용하는 경우 비구조화 할당을 하면 문제가 생긴다. (this는 함수를 호출할 때 어떻게 호출되었냐에 따라 결정되기 때문)
따라서 this가 있는 경우에는 구조분해 할당을 하지 않는 것이 좋다.

자바스크립트는 선언할 때 결정되는 것과 호출할 때 결정되는 것이 있다.
this는 호출할 때 결정되는 아이다.
this는 기본적으로 윈도우다. 근데 객체 안에서 객체.method 했을 경우 this는 객체가 된다.
호출한 놈(객체) === this
예외적으로, 호출 방식과 무관하게 bind를 사용하면 명시적으로 this를 지정(고정)할 수 있다.
bind에서 묶인 애가 this this를 알고 나서 화살표 함수를 쓸지, function을 쓸지 결정 바깥쪽 this와 안쪽 this를 같게 만드는 방법: 화살표 함수
화살표 함수를 쓸 경우 바깥쪽 this가 그대로 함수 안으로 들어온다.
function을 하면 자기만의 this를 가진다. 화살표 함수가 나온 게 대부분 this 때문이다. this 문제를 해결하기 위해서.
function과 화살표 함수의 가장 큰 차이: this function과 화살표 함수는 각각 다른 용도로 쓸 수 있기 때문에 같이 남아있지만, var은 let과 const가 완벽하게 대체하기 때문에 거의 사라졌다고 본다.

프로미스
ES2015부터는 자바스크립트와 노드의 API들이 콜백 대신 프로미스 기반으로 재구성된다.
모든 콜백 함수를 프로미스로 바꿀 수는 없고, 메서드가 프로미스 방식을 지원해야 한다(프로미스 객체를 가지고 있어야 한다).
하지만 지원하지 않는 경우 프로미스로 바꿀 수 있는 방법이 있다: util.promisify
Promise.resolve : 즉시 resolve하는 프로미스를 만드는 방법
Promise.reject : 즉시 reject
Promise.all : 모두 resolve될 때까지 기다렸다가 then으로 넘어간다

async/await: 프로미스를 이용하는 아이들
async: 프로미스를 리턴하는 함수로 만들어줌
async에서의 리턴값이 promise (then)의 인자로 넘어감(resolve)
await: 프로미스가 resolve 되어서 결과값이 넘어올 때까지 기다리는 아이
Promise.all 대신 for await of문을 사용해서 프로미스를 반복할 수 있다

'Node.js' 카테고리의 다른 글

node  (0) 2022.04.16