JS 실행 메커니즘에 대한 간략한 분석

零到壹度
풀어 주다: 2018-03-28 14:55:27
원래의
1377명이 탐색했습니다.

이 기사는 주로 JS 실행 메커니즘을 간략하게 분석하는 방법을 공유하며 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 에디터와 함께 구경하러 오세요

우선 2가지 사항을 꼭 기억해주세요:

(1) JS는 싱글 스레드 언어입니다

(2) JS의 이벤트 루프는 JS 실행 메커니즘입니다. JS 실행에 대한 깊은 이해는 JS

1의 이벤트 루프에 대한 깊은 이해와 동일합니다. 세 가지 핵심 질문: JS가 단일 스레드인 이유는 무엇입니까? 단일 스레드는 어떻게 달성합니까?

기술 외관은 실제 세계의 응용 시나리오와 밀접한 관련이 있습니다.

마찬가지로 실제 시나리오를 바탕으로 이 세 가지 질문에 답할 것입니다

(1) JS가 단일 스레드인 이유는 무엇입니까?

JS는 원래 브라우저에서 사용하도록 설계되었으므로 JS가 브라우저는 멀티스레드입니다.


1

2

3

4

5


시나리오 설명:

이제 2 프로세스,process1이 있습니다. process2,있으니까 많은 JS,가 동일한 dom,에서 동시에 작동하도록

process1 dom,process2을 삭제했습니다. 이것을 편집했습니다 dom,문제 2 모순되는 명령을 동시에,브라우저는 어떻게 실행해야 할까요?

이렇게 생각해보면 JS가 왜 단일 스레드로 설계되었는지 이해하기 쉬울 것입니다.

(2) JS에 비동기가 필요한 이유는 무엇입니까?


1

2

3

4


장면 설명:

JS에 비동기 이 없으면 는 위에서 아래로만 실행될 수 있습니다 , 이전 줄의 구문 분석 시간이 매우 길면 , 다음 코드가 차단됩니다.

사용자의 경우,차단은"걸림"을 의미,이로 인해 사용자 경험이 매우 저하됩니다

그래서 JS에는 비동기 실행이 존재합니다.

(3) 단일 스레드 JS는 어떻게 비동기 구현을 달성합니까?

JS는 단일 스레드이고 하나의 스레드에서만 실행될 수 있으므로 어떻게 비동기 구현을 달성합니까?

예 이벤트 루프(이벤트 루프), 이벤트 루프 메커니즘을 이해하면 JS

2의 실행 메커니즘을 이해하게 됩니다. JS

예제 1의 이벤트 루프(1), 실행 순서를 관찰하세요

 console.log(1)
    
    setTimeout(function(){
        console.log(2)
    },0)
 
    console.log(3)
로그인 후 복사

run 결과는 다음과 같습니다. 1 3 2

즉, setTimeout의 함수는 즉시 실행되지 않고 일정 시간 지연되어 특정 조건이 충족된 후에만 실행되는 유형의 코드를 비동기 코드라고 합니다.

여기서 우리는 먼저 작업을 동기 작업과 비동기 작업으로 나누는 JS의 분류 방법을 알고 있습니다.

그림 설명

이 분류 방법에 따르면 JS의 실행 메커니즘은