비동기, 클로저

oh_ji_0·2021년 6월 1일
0

코어 자바스크립트 : 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍
( p. 136 / 213 )

목표

  • 자바스크립트 코어 를 이해하기 위해 노력한다.
  • 언어의 본질적 이해에 더 다가선다

요약

비동기

  • cpu의 연산에 의해 즉시 처리가 가능한 대부분의 코드는 동기 코드
  • 비동기 코드
    • 요청, 실행대기, 보류 등과 관련된 코드
    • 사용자에 요청에의해 특정 시간이 경과되기까지 실행 보류
    • 직접적인 사용자 개입 후에야 함수를 실행하도록 대기
    • 웹브라우저 자체가 아닌 별도의 대상에 무언가를 요청하고 응답 받은 후 실행하는
  • 콜백함수 탈출
    • Promise 활용법
    • ES6, Generator
      • Generator 함수 실행 → Iterator 반환
      • Iterator는 next 라는 메서드를 가지고 있다.
      • yield에서 함수 실행을 멈추고, next 함수를 호출하면 멈췄던 부분부터 시작
    • async/await
      • await을 표기하는 것만으로 뒤의 내용을 Promise로 자동전환. 해당 내용이 resolve 된 후에야 다음으로 진행한다.
  • 어떤 함수에 인자로 메서드를 전달하더라도 이는 결국 함수로서 실행된다.

클로저

  • A closure is the combination of a function and the lexical environment within which that function was declared

    • lexical environment
      • environmentRecord 와 outerEnvironmentReference에 의해 변수의 유효범위인 스코프가 결정된다.
    • 내부함수가 선언될 당시의 외부함수의 LexicalEnvironment와의 상호작용
  • 가비지 컬렉터의 동작 방식

    • 어떤 값을 참조하는 변수가 하나라도 있다면 그 값은 수집 대상에 포함되지 않는다.
  • 외부 함수의 LexicalEnvironment가 가비지 컬렉팅 되지 않는 현상

  • return 없이도 클로저가 발생하는 다양한 경우

    • setInterval/setTimeout
    • eventListener
  • 객체 지향과 함수형 모두를 아우르는 개념, 클로저

  • 메모리 소모 특성

  • 클로저의 관리방법

    • 참조 카운트를 0으로 만들어주기
      • 참조형이 아닌 기본형 데이터 (undefined / null) 할당
profile
기본에 충실하고 싶습니다. #Front-end-developer

0개의 댓글