Javascript의 실행 컨텍스트
JavaScript 코드의 실행 방식을 이해하면 코드를 쉽게 읽고 쓸 수 있습니다.
우리는 기본적인 핵심 개념을 깊이 이해합시다.
Everything in Javascript happens inside an Execution Context
그럼
Execution Context
도대체 뭘까요?컨텍스트 실행이란 무엇입니까?
실행 컨텍스트는 JavaScript 코드를 실행하는 환경으로 정의됩니다.
그것은 두 개의 구성 요소가 있는 큰 용기와 같다.
Variable environment
라고도 합니다.Thread of execution
라고도 부른다.Javascript is a "synchronous single-threaded" language.
그러니 이 점을 하나하나 이해합시다.
단일 스레드는 JS가 한 번에 하나의 명령만 실행할 수 있음을 의미합니다.
동기화란 앞의 실행이 완료될 때만 JS가 다음 줄로 이동할 수 있음을 의미합니다.
JS 코드를 실행하면 어떻게 됩니까?
우리가 JS 코드를 실행할 때, JS 엔진의 화면 뒤에서 많은 일이 발생할 것이다.
우선,
Execution Context
을 만들고 있습니다.간단한 예를 들어 이 점을 이해합시다.
var n = 2;
function double(num){
var ans = num * 2;
return ans;
}
var double1 = double(n);
var double2 = double(4);
그래서 이 프로그램을 실행할 때 Global Execution Context
생성됩니다.이 실행 컨텍스트는 다음 두 단계로 작성됩니다.
메모리 생성 단계
이 단계에서 자바스크립트는 코드를 한 줄씩 읽고 모든 변수와 함수에 메모리를 분배합니다.
변수에 메모리를 분배할 때, 변수에 특수 값
undefined
을 저장합니다.함수에 대해, 그것은 전체 함수체를 이 저장 공간에 저장한다.
코드 실행 단계
이 단계에서 자바스크립트는 코드를 한 줄 한 줄 실행하고 메모리 생성 단계에 저장된 함수와 변수의 값을 업데이트합니다.
첫 번째 행:
var n = 2;
이후 전역 실행 컨텍스트는 다음과 같습니다.두 번째 줄에서 다섯 번째 줄까지 실행할 것이 없어서 이 부분을 건너뛰었다.
At line 6:
var double1 = double(n);
여기 함수 더블 () 을 호출합니다.
Whenever a new function is invoked, a new execution context is been created
따라서 함수
double(n)
에 대해 JS가 새 실행 컨텍스트를 작성했습니다.1단계: 새로 작성된 실행 컨텍스트의 메모리 작성 단계는 다음과 같습니다.
단계 2: 새로 작성된 실행 컨텍스트의 코드 실행 단계는 다음과 같습니다.
이 단계에서 매개 변수num의 값은 함수에 전달된 매개 변수인 n(2와 같음)에 따라 업데이트됩니다.
다음에 표현식
num * 2
을 사용하여ans의 값을 업데이트합니다.Whenever we encounter return statement:
return ans;
이후 현재 장면은 다음과 같습니다.ans의
var double2 = double(4);
이후 이와 같은 절차를 반복합니다.마지막으로 전역 실행 컨텍스트는 다음과 같은 결과를 가져옵니다.
When Javascript completes the execution of the entire code, then the Global Execution Context is also deleted.
스택 호출
우리는 함수를 호출할 때마다 함수 실행 상하문을 만드는 것을 안다.
가장 간단한 자바스크립트 프로그램에도 함수 호출이 상당히 많기 때문에 모든 함수 실행 상하문은 어떤 방식으로 관리해야 한다.
대부분의 다른 함수는 호출될 것이다.
현재 실행 중인 함수를 추적하기 위해 창고를 사용했습니다. 현재 실행 중인 함수 실행 상하문은 창고의 맨 위에 있습니다.
실행이 완료되면, 실행이 완료되면, 실행이 비어 있을 때까지 다음 실행 상하문의 실행은 계속됩니다.
이 창고를 호출 창고라고 부른다.
Call stack maintains the order of execution of execution contexts.
이 호출 스택은 Javascript 프로그램을 실행할 때마다 채워집니다
Global Execution Context
.함수가 호출되거나 새 실행 상하문을 만들 때, 이 창고를 하나씩 채웁니다.첫 번째 호출 스택은 컨텍스트 푸시를 전체적으로 수행하는 데 사용됩니다.
여섯 번째 줄까지:
var double1 = double(n);
함수 더블 (n) 을 성공적으로 실행하면 컨트롤이 전역 실행 상하문으로 되돌아오고, 더블 (n) 의 실행 상하문이 창고에서 팝업됩니다.
이와 유사하게, 7줄:
var double2 = double(4);
에 대해 호출 창고는 '실행 상하문 for double (4)' 을 사용하여 전송합니다.함수 더블 (4) 을 성공적으로 실행하면 컨트롤은 전역 실행 상하문을 되돌려주고, 창고에서 더블 (4) 의 실행 상하문을 꺼냅니다.
Javascript가 전체 코드를 실행할 때 전역 실행 상하문도 호출 창고에서 팝업됩니다.마지막으로, 호출 창고는 비어 있습니다.
드디어!!화면 뒤에 Javascript가 어떻게 작동하는지 학습합니다.
마무리
읽어주셔서 감사합니다!!나는 블로그에서 많은 돈을 써야 한다는 것을 안다.나는 그것이 어느 정도 도움이 되기를 바란다.특히 고맙다
Akshay Saini
.네트워크와 공유하십시오.아래에 너의 평론을 남기는 것을 잊지 마라.Reference
이 문제에 관하여(Javascript의 실행 컨텍스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anuradha9712/execution-context-in-javascript-43l7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)