Javascript 사전 컴파일의 기능은 다음과 같습니다. 1. 엔진이 코드에 하위 수준 구문 오류가 있는지 확인하는 구문 분석 2. 사전 컴파일의 경우 간단한 이해는 메모리에 일부 공간을 열어 일부를 저장하는 것입니다. 변수와 함수 3. 이름에서 알 수 있듯이 해석과 실행은 코드를 실행하는 것입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
JavaScript 실행 3부작
그램 분석
사전 컴파일
해석 및 실행
문법 분석은 매우 간단합니다. 즉, 엔진이 코드에서 하위 수준 구문을 확인합니다. 해석 및 실행 이름에서 알 수 있듯이 사전 컴파일을 간단히 이해하면 일부 변수와 함수를 저장하기 위해 메모리에 일부 공간을 마련하는 것입니다.
사전 컴파일은 언제 발생하나요? 사전 컴파일은 스크립트에서만 발생한다고 잘못 알고 있습니다. 내부 코드 블록이 실행되기 전 사전 컴파일은 문제가 없지만 대부분 사전 컴파일이 발생합니다.
분석 예시
먼저 다음 두 개념을 구별하고 이해해 봅시다: 변수 선언 var... 함수 선언 function(){}
<script> var a = 1; console.log(a); function test(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {} console.log(b); function d() {} } var c = function (){ console.log("I at C function"); } console.log(c); test(2); </script>
분석 과정은 다음과 같습니다.
사전 컴파일을 시작하여 GO 속성으로 변수 선언을 찾고 값을 정의되지 않음에 할당합니다.
GO 속성으로 함수 선언을 찾아 함수 본문에 값을 할당합니다.
//抽象描述 GO/window = { a: undefined, c: undefined, test: function(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {} console.log(b); function d() {} } }실행 코드 설명(test(2) 함수를 호출하는 문장이 실행될 때까지)
//抽象描述 GO/window = { a: 1, c: function (){ console.log("I at C function"); } test: function(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {} console.log(b); function d() {} } }
//抽象描述 AO = { a:undefined, b:undefined, }사전 컴파일의 세 번째 단계는 다음과 같습니다.
//抽象描述 AO = { a:2, b:undefined, }
//抽象描述 AO = { a:function a() {}, b:undefined d:function d() {} }다음 프로세스 변경은 다음과 같습니다. test() 함수를 실행할 때:
//抽象描述 AO = { a:function a() {}, b:undefined d:function d() {} } ---> AO = { a:123, b:undefined d:function d() {} } ---> AO = { a:123, b:function() {} d:function d() {} }
참고:
변수 선언 및 함수 선언은 사전 컴파일 단계에서 발생하며 초기화 동작(할당)이 없으며 익명 함수는 참여하지 않습니다. 사전 컴파일; 변수 초기화는 해석 및 실행 단계에서만 발생합니다.
사전 컴파일(함수 실행 전)
Creation AO 객체(활성 객체)
함수 내에서 함수 형식 매개변수와 변수 선언을 찾습니다. 형식 매개변수 이름과 변수 이름은 AO 객체의 속성으로 사용됩니다. 값은 정의되지 않습니다 실제 매개변수와 형식 매개변수가 통일되어 실제 매개변수 값이 할당됩니다. 형식 매개변수에 대한 함수 선언을 찾아보세요
함수 선언의 전반적인 개선 - (구체적으로는 함수 호출 및 선언이 이전인지 여부에 관계 없음) 또는 이후에는 항상 함수 선언을 호출 앞으로 이동합니다.)
변수 선언 개선 -(구체적으로는 변수 호출 및 선언 위치가 이전이든 이후이든 관계없이 시스템은 항상 호출 전에 선언을 이동하세요. 선언일 뿐이므로 값이 정의되지 않습니다.)
】
위 내용은 자바스크립트 사전 컴파일은 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!