자바스크립트의 무릎 깊이: 자바스크립트가 실행될 때
본고는 고차원 분야에 착안하고자 한다.
function logger(message) {
console.log(message)
}
logger("Hello")
우리는 모두 이것이 컨트롤러에'안녕하세요'를 인쇄할 것이라는 것을 알고 있지만, 배후에서 무슨 일이 일어날까요?이를 위해서는 Javascript가 실행될 때 알아야 합니다.실행 상하문부터 시작합시다.전역 실행 상하문은javascript 해석, 저장 및 실행 코드의 환경 이름입니다.여기에는
실행 루틴 - 자바스크립트가 순서대로 코드를 해석하는 곳입니다.
전역 변수 환경 (또는 전역 메모리) - 자바스크립트가 만나는 모든 변수와 함수를 저장하는 곳
Javascript is single threaded and synchronous
단일 스레드: Javascript는 코드에서 여러 개의 다른 경로를 동시에 사용하지 않고 하나의 경로를 따릅니다.
동기화: Javascript는 코드의 표시 순서에 따라 코드를 처리합니다.그것이 현재 코드 줄을 처리할 때, 모든 다른 코드는 반드시 그것이 완성될 때까지 기다려야 한다
코드 세션의 컨텍스트를 살펴보겠습니다.
실행 루틴은 한 줄씩 우리의 코드를 통과할 것이다.그것이 본 첫 줄은logger의 함수 정의입니다.내부 내용을 읽지 않으면 자바스크립트는 이 정의를 변수 이름
logger
의 메모리에 추가합니다.그리고 실행 루틴은 다음 줄 코드, 즉 다섯 번째 줄로 이동합니다.여기서 자바스크립트는 변수 이름logger
을 보고 전역 메모리를 검사하여 같은 이름으로 저장된 변수가 있는지 확인합니다.있습니다. 따라서 Javascript는 이 코드를 실행하고 매개 변수를 전달합니다"Hello"
.루틴 호출 함수를 실행할 때, Javascript는 이른바 로컬 실행 상하문을 만듭니다.로컬 실행 상하문 또는 함수 수준 실행 상하문은 소형 전역 실행 상하문과 유사하다.실행 루틴은 이 국부 상하문을 통해 데이터를 국부 메모리 (국부 변수 환경) 에 저장할 수 있습니다.참고 로컬 컨텍스트는 글로벌 메모리에 액세스할 수 있지만 글로벌 메모리는 로컬 메모리에 액세스할 수 없습니다.이것이 바로 이른바 범위다.프로그램이 갈수록 복잡해지면서 많은 실행 상하문이 한데 묶일 수 있다.중요한 것은 모든 실행 상하문이 자신의 메모리와 조상의 메모리에 접근할 수 있다는 것을 기억하는 것이다.변수를 찾을 때, 자신의 실행 상하문에서 그것을 찾지 못하면, 자바스크립트는 다음 실행 상하문을 검색합니다. 변수를 찾거나 오류를 던질 때까지.
실행 루틴이 있는 상하문을 추적하기 위해 창고를 호출합니다.새 로컬 실행 상하문 (호출 또는 프레임) 은 스택으로 전송되며, 완료되면 스택에서 팝업되며, 실행 루틴은 전역 상하문으로 되돌아옵니다.호출 창고는 후진 선출이다. 접시 한 무더기처럼 마지막에 열리는 것은 항상 첫 번째로 열리는 것이다.
Javascript는 동기화되기 때문에 여러 개의 코드 블록을 동시에 실행할 수 없습니다.이를 관리하기 위해 Javascript는 두 개의 대기열을 가지고 있으며, 실행 라인이 준비될 때까지 비동기적으로 대기합니다.
이벤트 순환은 어떤 리셋이 창고로 옮겨질지 결정하는 것을 책임진다.두 가지 기준을 사용합니다.
그러면 어떤 임무가 어느 대열에 들어갑니까?모든 Javascript가 실행될 때 미세한 차이가 있기 때문에 우리가 브라우저에 있다고 가정해 봅시다.
리셋 대기열에 추가하는 주요 방법은 다음과 같습니다.
setTimout()
또는 setInterval()
window.queueMicrotask()
(일반적으로 라이브러리/프레임워크를 만들지 않으면 사용하지 않음) Reference
이 문제에 관하여(자바스크립트의 무릎 깊이: 자바스크립트가 실행될 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/blackhaj/knee-deep-in-javascript-the-javascript-runtime-3ki2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)