자바스크립트 컴파일 과정
Javascript는 브라우저에만 국한되지 않고 Node.js, 모바일 터미널, 데스크톱 터미널, 임베디드 디바이스 등 다양한 애플리케이션 시나리오에서 널리 사용되는 웹 개발에 필수적인 기술이 되었습니다. Javascript를 실행하는 동안 매우 중요한 개념이 있는데, 바로 컴파일 과정이다. 이번 글에서는 컴파일 과정의 관점에서 자바스크립트의 실행과정을 소개하겠습니다.
편집 과정은 어떻게 되나요?
컴파일 프로세스는 소스 코드를 실행 가능한 코드로 변환하는 프로세스입니다. Javascript에서 컴파일 프로세스는 구문 분석 단계와 실행 단계의 두 단계로 나눌 수 있습니다.
파싱 단계
파싱 단계는 어휘 분석과 구문 분석의 두 부분으로 나뉩니다.
어휘 분석
어휘 분석의 작업은 소스 코드를 언어의 가장 작은 단위인 어휘 단위(토큰)로 분해하는 것입니다. 어휘 단위에는 키워드(예: 함수, var), 식별자(예: 변수 이름 및 함수 이름) 및 연산자(예: +, -, *, / 등)가 포함됩니다.
예를 들어 다음은 간단한 함수 선언입니다.
function add(x, y) { return x + y; }
이 함수 선언은 다음 어휘 단위로 분해됩니다.
Keyword 'function' Identifier 'add' Punctuator '(' Identifier 'x' Punctuator ',' Identifier 'y' Punctuator ')' Punctuator '{' Keyword 'return' Identifier 'x' Punctuator '+' Identifier 'y' Punctuator ';' Punctuator '}'
문법 분석
문법 분석 작업은 어휘 단위를 추상 구문 트리로 변환하는 것입니다. (AST) . 추상 구문 트리는 코드의 구문 구조를 트리 구조로 표현한 데이터 구조입니다. 각 노드는 문법 구조의 구성을 나타내고 하위 노드는 구성의 하위 구성을 나타냅니다.
예를 들어, 위 함수 선언의 경우 생성된 추상 구문 트리는 다음과 같습니다.
{ "type": "FunctionDeclaration", "id": { "type": "Identifier", "name": "add" }, "params": [ { "type": "Identifier", "name": "x" }, { "type": "Identifier", "name": "y" } ], "body": { "type": "BlockStatement", "body": [ { "type": "ReturnStatement", "argument": { "type": "BinaryExpression", "operator": "+", "left": { "type": "Identifier", "name": "x" }, "right": { "type": "Identifier", "name": "y" } } } ] } }
실행 단계
파싱 단계가 완료된 후 Javascript 프로그램은 실행 단계에 들어갑니다. 실행 단계의 작업은 추상 구문 트리를 실행하는 것입니다.
추상 구문 트리를 실행하는 프로세스는 사전 컴파일과 실행의 두 단계로 나눌 수 있습니다.
사전 컴파일
사전 컴파일 작업은 변수 및 함수 선언을 처리하는 것입니다. 실행 단계가 시작되기 전에 Javascript 엔진은 프로그램의 추상 구문 트리를 스캔하고 현재 범위에 해당 변수와 함수를 생성합니다. 이 프로세스를 범위 전처리라고 합니다.
먼저 모든 함수 선언이 고급화되었습니다. 이 프로세스를 함수 선언 호이스팅이라고 합니다. 함수 선언 호이스팅의 핵심은 함수 이름과 함수 본문을 현재 범위의 최상위로 올려 함수가 선언되기 전에 함수를 호출할 수 있도록 하는 것입니다.
예를 들어 다음 코드:
add(1, 2); function add(x, y) { return x + y; }
는
function add(x, y) { return x + y; } add(1, 2);
와 동일합니다. 둘째, 모든 변수를 미리 선언하는 과정을 변수 호이스팅이라고 합니다. 변수 승격은 변수 선언만 승격하고 변수 할당 문은 승격하지 않는다는 점에 유의해야 합니다.
예를 들어 다음 코드:
console.log(a); var a = 1;
는
var a; console.log(a); a = 1;
Execution
과 동일합니다. 실행 프로세스는 명령문이 나타나는 순서대로 실행됩니다. 실행 중에 변수가 할당되고, 함수가 호출되며, 코드 블록이나 함수에 따라 범위가 지정될 수 있습니다.
요약
Javascript의 컴파일 과정에는 파싱 단계와 실행 단계가 포함됩니다. 구문 분석 단계에는 어휘 분석 및 구문 분석이 포함되고 실행 단계에는 사전 컴파일 및 실행이 포함됩니다. 실행 단계 이전에 자바스크립트 엔진은 범위를 전처리하고, 함수 선언 호이스팅과 변수 호이스팅을 수행한 후, 명령문이 나타나는 순서대로 코드를 실행합니다.
위 내용은 자바스크립트 컴파일 과정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사에서는 Data Fetching 및 기능 구성 요소의 DOM 조작과 같은 부작용을 관리하기위한 후크 인 React의 useEffect에 대해 설명합니다. 메모리 누출과 같은 문제를 방지하기 위해 사용법, 일반적인 부작용 및 정리를 설명합니다.

게으른로드는 필요할 때까지 컨텐츠로드를 지연시켜 초기로드 시간과 서버로드를 줄임으로써 웹 성능 및 사용자 경험을 향상시킵니다.

JavaScript의 고차 기능은 추상화, 공통 패턴 및 최적화 기술을 통해 코드 간접성, 재사용 성, 모듈성 및 성능을 향상시킵니다.

이 기사는 다중 연계 기능을 단일 연계 함수 시퀀스로 변환하는 기술 인 JavaScript의 카레에 대해 논의합니다. Currying의 구현, 부분 응용 프로그램 및 실제 용도와 같은 혜택, 코드 읽기 향상을 탐색합니다.

이 기사는 가상 Dom 트리를 비교하여 DOM을 효율적으로 업데이트하는 React의 조정 알고리즘을 설명합니다. 성능 이점, 최적화 기술 및 사용자 경험에 미치는 영향에 대해 설명합니다. 문자 수 : 159

이 기사는 REACT의 USECONTEXT를 설명하며, 이는 PROP 시추를 피함으로써 상태 관리를 단순화합니다. 중앙 집중식 상태 및 성능 개선과 같은 렌더링을 통해 성능 향상과 같은 이점에 대해 논의합니다.

기사에서는 extentdefault () 메서드를 사용하여 이벤트 처리기의 기본 동작 방지, 향상된 사용자 경험과 같은 이점 및 접근성 문제와 같은 잠재적 문제에 대해 논의합니다.

이 기사는 예측 가능성, 성능 및 사용 사례와 같은 측면에 중점을 둔 React의 제어 및 통제되지 않은 구성 요소의 장단점에 대해 설명합니다. 그것은 그들 사이에서 선택할 때 고려해야 할 요소에 대해 조언합니다.
