섹션1 알아두어야할 자바스크립트

반응형

호출 스택

자바스크립트에서의 함수 실행 순서를 관리하는 구조를갖는 시스템이다.

작동 방식

  1. 함수 호출 - 함수가 호출되면 실행컨텍스트가 생성되고 호출 스택의 맨 위에 푸쉬가 된다.
  2. 함수 실행 - 스택의 맨위에 위치한 함수가 실행된다.
  3. 함수 반환 - 함수가 작업을 마치고 반환되면 실행컨텐스트에서 제거된다. 이어서 1~3 번까지 반복한다.

비동기 함수 의 호출 스택

  1. 호출스택에서 비동기 함수가 실행되면 백그라운드에 있는 브라우저라면 웹 API , 노드라면 C++ API 에 넘겨서 수행한다.
    ( 호출스택에서는 제거 )
  2. 수행이 끝나면 함수는 콜백 큐에 추가되는데 이벤트 루프가 호출스택을 계속 주시하고있다가 호출스택이 비어있게되면 그때 이벤트루프가 콜백 큐에 있던 함수를 호출스택에 푸쉬한다.

    화살표 함수

    ES6 이후 도입된 새로운 함수표현이다. 문법이 간결하며 this에 대한 바인딩에 차이가 있다.

this 는 함수가 정의될때의 컨텍스트를 가르키게된다 그렇기에
기존 함수표현식으로 만든다면 this는 자기자신을 가르키게된다.
화살표함수는 부모요소의 this 를 가르키게된다.

Promise , await / async

Promise

비동기작업의의 상태로 pending ,fulfilled ,rejected 갖는 객체

let promise = new Promise((resolve, reject) => { 

    // 비동기 작업 수행 
    if (/* 작업 성공 */) {
        resolve(value);// 작업 성공 시 resolve 호출 
    } else { 
        reject(error); // 작업 실패 시 reject 호출 
    } });

await / async

Promise 를 더 간편히 동기적인 느낌으로 사용할수있게 만드는 ES8 문법
가독성이 좋고 직관적인 오류처리를 할수있다
async 함수는 항상 Promise 를 반환한다.

async function asyncFunction() {

    try {

        let result = await promise; // Promise가 해결될 때까지 기다림

        console.log(result); // 해결된 값 사용

    } catch (error) {

        console.error(error); // 오류 처리

}

}

WeakMap , WeakSet

weak 가 붙은 map 과 set 이다 .
이둘의 특징은 기존 객체 보다 키에대한 참조가 약하게 유지되서 가비지컬렉션의 대상이 될수있다는 특징이있다.
이러한 특징들을 이용해 직접 개발자가 메모리 관리를 해야될때 사용된다.

여기서 약한 참조란 ?
객체에 대한 참조를 유지하지만 객체가 가비지컬렉션의 대상이 되는것을 방지하지않는다 즉 메모리에서 해제될수있다는 얘기다.

이러한 원리는
객체참조를할때 기존에는 강한 참조를한다. 이의미는 어떤 객체를 가르키지않을때 가비지 컬렉터가 메모리를회수할수있도록 하는것인데 반대로 참조하고있다면 가비지컬렉션 대상이 되지않는다는뜻이다.
약한 참조는 객체를 참조하지만 가비지 컬렉션의 대상에서 제외되지않는다는 차이가있다.

기존에 알던내용이나 좀더 보충해야될 부분 위주로 정리했다

반응형

'백엔드 > Nodejs' 카테고리의 다른 글

섹션4 npm  (0) 2023.12.15
섹션3 노드 기본  (0) 2023.12.15
섹션2 노드 기본기능  (1) 2023.12.09
Nodejs ?  (1) 2023.12.06