오늘은 JavaScript의 동작원리에 대해서 알아보겠다.
실행 동작은 크게 두가지로 나뉜다.
1️⃣ 동기적 처리
2️⃣ 비동기적 처리
언어마다 각각 지원하는 처리 방식이 다르며,
오늘은 JavaScript에 처리 방식이 무엇인지 알아보려고 한다.
🔷 동작원리 종류
🔹 동기적 처리
❓ 동기적 처리란
싱글 스레드 기반의 언어로, 한 번에 하나의 작업만 처리할 수 있다.
동기적 처리는 자바스크립트의 처리 방식으로
자바스크립트는 실행 단계에서 코드를 위에서 순차적으로 한 줄씩 처리하는 방식을 사용한다.
한 줄의 코드 작업이 완료되기 전까지는 그 다음 작업이 실행되지 않게 된다.
🔍 실생활 예시
줄 서서 대기하고 있는 상황에선 앞 사람의 주문이 끝날 때까지 주문을 할 수 없고 대기한다.
✔️ 동기 장점
- 순차적으로 실행되는 것을 보장한다.
- 코드가 단순하고 이해하기 쉽다.
✔️ 동기 단점
- 시간이 오래 걸릴 수 있다.
- 중간에 막히면 그 뒤에 작업이 실행되지 않아 막히게 된다.
🔹 비동기적 처리
❓ 비동기적 처리란
병열적으로 한번에 여러 작업을 처리해주는 것을 의미한다.
특정 코드가 처리되고 있을 때 다음 코드가 기다리지 않고 먼저 처리하며
JS 자체에서는 비동기를 지원하지 않기 때문에 비동기 처리로 정해진 함수를 사용하여 비동기 작업을 할 수 있다.
ex ) 지연함수 setTimeOut 를 통하여 비동기적 처리
❓ setTimeout 함수란
특정한 시간이 지난 다음에 실행 코드를 실행하는 함수이다.
setTimeout 함수에 대해선 따로 포스팅하겠다.
✔️ 비동기 장점
- 멀티태스킹이 가능하여 앞선 작업을 기다릴 필요 없이 바로 실행 가능
- 여러 일을 동시에 실행 하기 때문에 속도가 빠르다.
✔️ 비동기 단점
- 작업 완료 시점을 예측하기 어렵다.
- 코드가 복잡해지며, 에러를 찾기가 힘들다.
🤔 그럼 자바스크립트는 동기적 일까 비동기적 일까?
일반적으로 자바스크립트는 동기적 처리를 지원한다고는 들었는데
비동기적 처리도 가능해보인다.
한 가지 언어에서 두 가지 방식을 동시에 지원하는것이 가능한걸까?
👉 알아보자
✏️ 일단 엄연히 말하면 자바스크립트는 동기식 처리를 하는것이 맞다.
자바스크립트는 기본적으로 동기식으로 처리를하며, 순차적으로 한 줄씩 실행한다.
실행되는 작업들은 순서대로 스택 이라는 저장 구조에 쌓이게된다.
⁉️ 이때 비동기적 처리를 할 수 있게 해주는 setTimeout 함수를 사용할 경우
Web API 라는 웹 브라우저가 있다.
웹 브라우저와 서버 간의 데이터 교환을 가능하게 해주는 인터페이스를 의미한다.
자바스크립트에서 setTimeout 함수를 실행할 경우 실행문 통째로 Web API로 전달 된다.
Web API 는 전달 받은 함수를 JavaScript 대신 처리를 해주게 된다.
그리고 난 이후 JavaScript는 자기 자신의 작업을 그대로 이어서 실행한다.
👉 JS 와 WebAPI 의 통신
😲JS : setTimeout 함수네?
웹 브라우저야 넘겨줄테니까 대신 좀 처리해줘~
🤓WebAPI : 알겠어 내가 대신 처리해줄게 넌 너꺼 일해~
😲JS : 고마워 나는 바로 다음 작업 처리 할게 ~
✔️ 결론
자바스크립트는 동기적 처리를 지원하는 언어가 맞으며 자바스크립트 자체로는비동기 처리를 할 수 없지만
필요 시에 외부 브라우저에 도움을 요청하여 처리를 하며 비동기 처럼 처리할 수 있게 하는 것 이다.
'JavaScript' 카테고리의 다른 글
[JavaScript] Promise와 Ajax를 활용한 비동기 통신 (2) | 2025.02.11 |
---|---|
[JavaScript] Ajax 에 대해 알아보고 활용하기 (2) | 2025.02.10 |
[JavaScript] 배열 메서드에 대해 알아보기(Map,Filter,Reduce,Find,ForEach) (2) | 2025.02.05 |
[JavaScript] Arguments 와 나머지 매개변수에 차이에 대해 알아보자 (3) | 2025.02.04 |
[JavaScript] 일반 함수와 화살표 함수에 따른 this 바인딩 (2) | 2025.02.02 |