호이스팅은 (많은 개발자에게) 자바 스크립트의 알 수없는 또는 간과 된 동작입니다. 흠, 이 예는 우리가 예기치 않은 무언가를 얻는 처음이다. 우리는 3을 예상했지만 대신 정의되지 않은 것으로 기록됩니다. 그러나 다음 예제는 극적으로 실패합니다. foo에 대한 변수 선언은 함수 호출 전에 게양됩니다. 그러나 foo에 대한 할당이 게양되지 않으므로 비기능 변수를 호출하기 위한 예외가 throw됩니다. 다음은 클래스 식의 이름이 지정되지 않았거나 익명 변형이 있는 예제입니다. 호이스팅은 선언만 가능하지만 초기화는 불가능합니다. 자바스크립트는 선언되고 초기화된 변수를 한 줄로 이동하지 않습니다. 특히 새로운 JavaScript 개발자에게 물릴 가능성이 높은 경우는 내부 범위와 외부 범위 간에 변수 이름을 다시 사용하는 경우입니다. 예: 호이스팅은 이해하기 쉽지만 종종 JavaScript 언어의 뉘앙스를 간과합니다. 게양에 대한 적절한 이해가 없으면 프로그램은 미묘한 버그에 취약합니다. 이러한 버그를 방지하기 위해 많은 개발자(및 linting 도구)는 모든 범위의 맨 처음에 단일 변수 선언 문을 옹호합니다.

이것은 자바 스크립트 인터프리터가 본질적으로 코드를 보는 방식이기 때문에 개인적으로 코드를 위반한 죄가 있더라도이 규칙에 대한 타당성이 있습니다. 이 예제에서 JavaScript는 먼저 코드를 해석하고 rockStar 변수가 존재하는 것을 보고 범위의 맨 위로 이동합니다. 그리고 변수가 값을 할당하는 또 다른 예 : 우리가 아래 예제에서 볼 수 있듯이, var 반환으로 만든 선언은 정의되지 않은 반면 let 및 const 반환 오류 (다음을 제기하고 작성하기위한 gvlachos에 대한 신용): JavaScript 컴파일러는 변수 선언 전에 함수의 정의를 이동합니다. 다음 예제는 이를 증명합니다. 호이스팅은 다른 데이터 형식 및 변수와 잘 작동합니다. 변수는 선언되기 전에 초기화하고 사용할 수 있습니다. 호이스팅은 ECMAScript® 2015 언어 사양 이전에 는 규범 사양 산문에 사용되지 않는 용어입니다. Hoisting은 JavaScript에서 실행 컨텍스트(특히 생성 및 실행 단계)가 어떻게 작동하는지에 대해 일반적인 생각 방식으로 생각했습니다.

그러나 처음에는 개념이 약간 혼란스러울 수 있습니다. 우리는 변수 호이스팅의 예를 보았다, 이제 함수의 동작에 초점을 맞출 수 있습니다. 위의 예에서는 컴파일 단계에서 함수 선언이 메모리에 추가되었기 때문에 형식이 입력된 위의 코드에서 함수선언에 액세스하여 사용할 수 있습니다. 자바 스크립트를 배우기 시작했다면, 당신은 전에 게양이라는 용어를 접했을 수 있습니다. 정의에 대해 살펴보기 전에 예제를 살펴보겠습니다. 아래에서 함수를 만든 다음 호출합니다. JavaScript는 함수에서 나중에 선언될 변수를 전혀 선언되지 않은 변수와 다르게 처리합니다. 기본적으로 JavaScript 인터프리터는 모든 변수 선언을 찾고 함수의 맨 위에 “호이스트”를 찾기 위해 “앞을 내다봅니다”. 위의 예제는 다음과 같습니다: 게이스팅은 모든 선언을 현재 범위의 맨 위(현재 스크립트 또는 현재 함수의 맨 위)로 이동하는 JavaScript의 기본 동작입니다. 예를 들어, 호이스팅의 엄격한 정의는 변수 및 함수 선언이 실제로 코드의 맨 위로 이동되었음을 시사하지만 실제로는 그렇지 않습니다.

대신 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만 코드에서 입력한 위치에 그대로 유지됩니다. 충분한 대화를 통해 호이스팅의 영향을 보여 주는 몇 가지 기본 코드 예제를 보여 줄 수 있습니다. 자바 스크립트는 매우 유연한 언어이며, 행복하게 거의 모든 곳에서 변수를 선언 할 수 있습니다.

Categories: Sin categoría