이 실행 컨텍스트는 도대체 무엇입니까?!
그러나 JS는 내부적으로 어떻게 이렇게 인기 있고 강력하게 작동합니까?
호출 스택, 이벤트 루프, 콜백 큐, 마이크로 태스크 큐, 웹 API 모음을 포함하는 많은 기능과 도구가 포함된 JavaScript 런타임 환경 덕분에 이 모든 것이 가능합니다. .
호출 스택 내에서 코드는 한 번에 한 함수씩 실행됩니다. 코드가 실행될 때마다 실행 컨텍스트가 생성됩니다.
실행 컨텍스트는 변수 환경(메모리) 및 실행 스레드(코드)의 두 부분을 포함하는 가상 환경입니다.
변수 환경:
this 내부의 값은 코드 내부의 모든 변수와 함수를 등록하는 키:값 쌍으로 저장됩니다. 변수는 변수 자체로 저장되며 함수와 마찬가지로 크기에 관계없이 함수 전체를 저장하며 실제로 특정 예외가 있지만 전체 함수는 실행 컨텍스트 내부에 전체적으로 저장됩니다.
실행 스레드:
이 내부에서 모든 기능이 발생하고 코드는 한 줄씩 실행됩니다. JS는 단일 스레드 언어이므로 한 번에 한 줄의 명령만 실행할 수 있습니다.
다음은 Execution 컨텍스트를 잘못 그린 것입니다.
과정:
JS는 코드를 두 번 훑어보며 첫 번째 실행에서 모든 변수와 함수를 등록합니다. 함수는 그대로 등록되지만 변수의 경우 '정의되지 않음'으로 저장됩니다. 이는 변수가 정의되기 전에 변수에 액세스할 수 있지만 정의되지 않은 값을 반환한다는 의미입니다.
예를 들어:
console.log(a);
var a = 10;
이것은 콘솔에서 정의되지 않은 로그를 기록할 JS의 유효한 코드이지만 let/const가 아닌 var의 경우에만 가능합니다. 이것이 var, let 및 const의 차이점 중 하나입니다. 선언 전에 변수에 액세스하는 이러한 현상은 다른 블로그에서 자세히 설명하는 호이스팅입니다.
두 번째 실행에서는 코드를 한 줄씩 실행하고 변수가 정의될 때마다 해당 변수의 값을 정의되지 않음에서 변수 환경 내부의 값으로 업데이트합니다.
실행이 완료되면 실행 컨텍스트가 호출 스택에서 제거됩니다.
베이스에서 코드가 실행될 때마다 Global Execution 컨텍스트가 생성되고 그 이후의 모든 Execution 컨텍스트가 그 위에 있습니다.
이것이 JS 런타임 내에서 코드가 실행되는 방식이지만 이것은 빙산의 일각일 뿐이며 JS 런타임 내에는 코드 실행에 역할을 하는 많은 도구가 있습니다!
당신이 좋아 바랍니다! :)
Reference
이 문제에 관하여(이 실행 컨텍스트는 도대체 무엇입니까?!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tanishqkrk/what-the-hell-is-this-execution-context-4bcc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)