자바스크립트 엔진은 기본적으로 하나의 스레드(thread)에서 동작한다. 하나의 스레드를 가지고 있다는 것은 하나의 스택(Stack)을 가지고 있다는 의미와 같고, 하나의 stack만 있다는 의미는 한 번에 단 하나의 작업만을 할 수 있다는 의미와 같다.
프로세스(process),코드(code) 영역,데이터(data) 영역,스택(stack) 영역,힙(heap) 영역,스레드(thread),싱글스레드(Single-threaded),콜스택(Call stack),Web API(=Brower API),테스크 큐(task Queu
자바스크립트의 callback은 문자그대로 called at the back 이다. 무언가를 비동기적으로 수행하는 함수는 함수 내 동작이 모두 처리된 후 실행되어야 하는 함수가 들어갈 `콜백`을 인수로 반드시 제공해야 한다.
콜백지옥을 해결하기 위해서 생겨난 것이 프로미스 입니다. Promise의 then을 사용하여 우리가 처리할 비동기코드를 동기로 실행되는 것처럼 보이게 하며 catch를 사용하여 에러처리를 좀 더 수월하게 할 수 있습니다
Async와 Await을 사용하여 promise를 좀 더 간결하고 간편하게 동기적으로 실행되는것처럼 보이게 만들어 줄 수 있다. 함수 앞에 async를 써주면 코드블록이 자동으로 promise로 바뀐다.
map() 은 어떤 배열을 다른 형태의 배열로 재생산할때 사용하는 반복문이다. 배열의 각 요소들에게 일괄적으로 함수를 적용하고 싶을 때 사용한다.
reduce() 는 map(),filter(),find() 모든 메서드를 대체할 수 있는 유연하고 강력한 메서드이다. map(),filter(),find()로 구현할 수 있는 문제라면 reduce()로도 구현할 수 있다.
filter() 는 배열 각 요소에 결과값이 true인 요소만을 모아서 새로운 배열을 반환하는 메서드이다. 요소들을 특정조건에 걸러지게 만드는 것이 목적이다.
이벤트 버블링은 어떤 요소에 이벤트가 발생했을때 어떠한 한 요소의 이벤트만 실행시키고 싶어도 그 요소가 속한 부모요소에 까지 이벤트가 전파되어 전부 다 실행되어지는 것을 말한다.이벤트 캡쳐링은 어떤 요소에 이벤트가 발생했을때 최상위 부모로부터 이벤트가 발생된 요소까지