Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
JavaScript 언어에서 **Hoisting**으로 알려진 메커니즘은 변수, 함수, 클래스 또는 임포트의 선언이 코드가 실행되기 전에 개념적으로 그 범위의 맨 위로 올라가는 과정을 설명합니다. 이 과정은 JavaScript 엔진에 의해 자동으로 수행되며, 스크립트를 여러 번 통과하면서 진행됩니다.
첫 번째 통과 동안, 엔진은 코드를 구문 오류를 확인하기 위해 파싱하고 이를 추상 구문 트리로 변환합니다. 이 단계에는 특정 선언이 실행 컨텍스트의 맨 위로 이동하는 hoisting이 포함됩니다. 파싱 단계가 성공적으로 완료되면, 즉 구문 오류가 없음을 나타내면, 스크립트 실행이 진행됩니다.
자세히 설명하자면, 함수 선언은 유형 1 hoisting 동작을 나타냅니다. `var` 키워드는 유형 2 동작을 보여줍니다. `let`, `const`, 및 `class`를 포함하는 렉시컬 선언은 유형 3 동작을 나타냅니다. 마지막으로, `import` 문은 유형 1 및 유형 4 동작으로 hoisted되는 독특한 특성을 가지고 있습니다.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.