Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 정보처리기능사
- 터미널 명령어
- ck editor 이미지 업로드
- 프로토콜 뜻
- angular 터미널
- CK Editor
- 앵귤러 터미널 명령어
- 정보처리기능사 필기 준비
- 코드펜 옮겨오는 법
- 정보처리기능사 필기
- 서버란 무엇인가
- 에디터 api
- ck editor 사진 넣는법
- 터미널에서 angular project 생성
- 프로토콜이란
- 코드펜 복사해도 안되는 이유
- 반응형 정사각형
- 정보처리기능사 따는법
- 프론트엔드 용어
- 반응형 웹
- 앵귤러 명령어
- 서버 뜻
- ck editor 사진
- 서버의 의미
- 코드펜
- 무료 에디터 사용법
- 에디터 사용법
- 정보처리기능사 준비
- 코드펜 안되는 이유
- 글 에디터 넣는법
Archives
- Today
- Total
멋진 개발자가 되고 싶어
[JS 이론] 자바스크립트 내부동작 (이벤트 루프) 본문
✏️JS의 이벤트 루프
자바스크립트의 내부동작 방식을 이해하면 함수 실행의 우선순위를 이해할 수 있게 된다.
전체적인 구조
- JS 엔진
- Web APIs
- Callback Queue
- Event Loop
Web APIs
- 노드에서는 백그라운드로 설명된다.
- 비동기 처리를 담당한다.
Callback Queue
- Task Queue, Event Queue등 다양한 형태로 설명된다.
- 비동기 처리가 끝난 후 실행되어야 할 콜백 함수가 차례로 할당된다.
구성
- Task Queue (Event Queue)
- Microtask Queue (Job Queue)
- Animation Frames
우선순위
Microtask Queue > Animation Frames > Task Queue
Event Loop
- Queue에 할당된 함수를 순서에 맞춰 Call Stack에 할당해준다.
JS 엔진 구조 (v8 엔진을 기준)
- Memory Heap
- Call Stack
Memory Heap
- 메모리 할당이 일어나는 곳이다.
Heap
- 구조화되지 않은 넓은 메모리 영역을 의미한다.
- 객체(변수, 함수)들이 담긴다.
Call Stack
- 호출 스택이라고도 한다.
- 실행될 코드의 한 줄 단위로 할당된다.
자주 발생하는 에러
Uncaught RangeError: Maximum call stack size exceeded
- Call stack 사이즈가 초과한 경우 발생하는 에러이다.
- 브라우저, 엔진마다 Call stack의 한계점이 다르다.
- chrome의 경우, 12만개이다.
동기적인 코드
function first(){
second();
console.log("1");
}
function second(){
third();
console.log("2");
}
function third(){
console.log("3");
}
first();
third();
- 3,2,1,3 순으로 출력된다.
비동기적인 코드
console.log("시작");
setTimeout(function (){
console.log("중간");
}, 3000);
console.log("끝");
- 시작, 끝, 중간 순으로 출력된다.
promise
- 동기적인 함수이다.
- .then()이 비동기로 동작하게 한다.
- Callback Queue의 뒤에 있어도 우선순위를 가지기 때문에 먼저 실행된다.
✅참고자료
'JAVASCRIPT > javaScript' 카테고리의 다른 글
객체탐색법 (0) | 2023.01.06 |
---|---|
[GSAP] js module을 통한 GSAP 사용 (사용 전 세팅 방법) (0) | 2022.12.21 |
node.js 사용법 (live-server / pakage.json) (0) | 2022.12.20 |
Comments