일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 비제어컴포넌트
- virtualDOM
- CSS
- 드림코딩
- flexbox
- reactPortals
- realDOM
- js
- useCallback
- 제어컴포넌트
- SQL
- mysql
- 변수타입
- React
- useState
- 리액트작동원리
- hoisting
- useEffect
- ForwardRefs
- MariaDB
- useImperativeHandle
- eventloop
- useContext
- reactDOM
- vscode
- BIND
- useReducer
- 재귀함수
- 프로그래머스
- ConnectBy
Archives
- Today
- Total
SOOM_BLOG [숨숨 블로그]
[Javascript] EVENT LOOP란? (feat. 코딩애플) 본문
EVENT LOOP란? (부제:브라우저 동작 원리)
자바스크립트를 누가 실행시켜주낭? 브라우저!(엔진)
- console.log(1+1)
- setTimeout(fumction(){console.log(2+2)}, 1000)
- console.log(3+3)
JS에서 결과는? 2, 6, (1초 쉬고)4
!코드 위에 적든 밑에 적든 빠른거부터 실행해준다!
그렇다면 js는 병렬처리가 가능한가??? NO!!!!
그렇다면 브라우저 동작 원리를 알아보자.
- Heap : 참조 타입들이 할당되는 곳이다. 콜 스택과 달리, Heap의 메모리 할당은 LIFO 정책을 따르지 않고 랜덤하게 배치된다.
또한 메모리 누수를 방지하기 위해 JS 엔진의 메모리 관리자가 항상 관리한다. - Stack : js코드를 진행해주는 곳.
싱글스레드이므로 js가 병렬처리 가능하다는 말은 옳지 않음
- Queue : Stack으로 바로 보내지 않고, 대기실로 보내는 코드들을 보관하는 곳.
💡 마무리...
- stack/queue를 바쁘게 하지 말자(웹페이지 다운, freezing 원인이 됨)
- js는 동기적으로 처러되며, queue에 함수를 보관하게 하여 비동기적 처리도 가능하다.
- js는 싱글스레드인데 이러한 작업들이 가능한가? js에 과부하 안걸리나?
이벤트루프는 js에 내장된 것이 아니라 엔진에 내장되어 있는 것임!(맞나..?)
참조 : 코딩애플 유투브, JS 메모리 구조 블로그 글
'TIL > js' 카테고리의 다른 글
[Javascript] Function 선언과 표현 (feat. 드림코딩 by 앨리) (0) | 2022.03.22 |
---|---|
[Javascript] data types, let vs var, hoisting (feat. 드림코딩 by 엘리) (0) | 2022.03.22 |
[Javascript] Direct(직접) vs Indirect(간접적) 함수 실행 (0) | 2022.03.12 |
[Javascript] 정규 표현식_특수문자, 패턴정리 (0) | 2022.03.07 |
[Javascript] Function.prototype.bind() (0) | 2022.02.17 |