날짜: 2022년 10월 4일 화요일

키워드 및 질문

본문

<aside> 📌 요약: Symbol은 유일무이한 키 값이며 프로퍼티를 Symbol로 보호하는데 쓰인다. 대괄호로만 접근 가능.

이터레이션 프로토콜은 다양한 데이터 타입들을 같은 방식으로 통합하여 접근하기 위해서 필요하다.

Generator는 함수를 바로 호출하지 않고 밖에서 함수를 제어한다. yield는 break point처럼 멈추고, next()로 흐름을 제어한다. function*로 선언한다.

Object 타입을 포함하고 있는 객체를 deep copy하면, 바깥 객체는 deep copy가 되지만, 안쪽에 데이터 Object 데이터 타입은 shallow copy가 되기 때문에 주의해야한다.

논리곱(&&)연산을 이용한 단축 평가를 통해 null undefined인지 확인했었는데, 이는 빈 문자열 ‘’ 같은 것들도 false로 처리하기 때문에 한계가 있었다. 이를 해결하기위해 ES11에서 옵셔널 체이닝 연산자를 제공한다. 표기법은 ?.

논리합(||)연산을 이용한 단축 평가를 통한 기존의 방법은 0, -0을 false로 처리했다. ES11에서 나온 널 병합 연산자를 사용하면 오직 null과 undefined 값만 false로 인식한다. 표기법은 ??

set은 보통 배열의 중복을 제거하는데 쓰인다. map은 object의 확장판이라 볼 수 있고, key, value 타입이 일정하다면 이터러블한 Map을 활용하는게 좋다. Object는 이터러블 하지 않다.

Error 객체는 세 가지 프로퍼티가 있다. name → 에러객체이름, message → new Error 생성자 함수 호출 시 인수로 전달한 에러 메시지 값, stack → 에러를 발생시킨 콜 스택의 호출 정보

에러를 중간에 throw하면 catch로 넘어가고, catch문이 없으면 자신을 호출한 곳으로 넘긴다. 이런식으로 에러 체이닝이 가능하다.

자바스크립트 런타임 환경에서 Task Queue에 있는것은 콜스택이 비었을때 하나씩 들어간다. 그리고 또 기다린다. 반면에 Micro Task Queue (Job Queue)는 시간이 되면 큐에 있는걸 다 넣어버린다. then then then 이용.

비동기 작업을 순서대로 처리하기위해 콜백함수를 많이 사용하는데 계속 쌓이게되면 콜백지옥에 빠진다. 이를 해결하기위한 기법으로 프로미스가 있다. fetch에서 then을 쓸 수 있는 이유가 내부적으로 프로미스 객체를 반환하기 때문.

</aside>