> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 `var`, `let`, `const` 사이에서 호이스팅, 임시 데드존 및 초기화는 어떻게 다릅니까?

JavaScript의 `var`, `let`, `const` 사이에서 호이스팅, 임시 데드존 및 초기화는 어떻게 다릅니까?

Patricia Arquette
풀어 주다: 2024-12-31 07:08:09
원래의
861명이 탐색했습니다.

How Do Hoisting, the Temporal Dead Zone, and Initialization Differ Between `var`, `let`, and `const` in JavaScript?

Let과 Const를 사용한 변수 호이스팅

var로 선언된 변수가 호이스팅되는 것은 사실이지만, let과 const로 선언된 변수의 동작은 이와 관련하여 혼란스러울 수 있습니다. 이러한 혼란을 해결하기 위해 무슨 일이 일어나고 있는지 분석해 보겠습니다.

Hoisting: A Universal Concept in JavaScript

모든 var를 포함한 JavaScript의 변수 선언 , let, const, 함수 및 클래스 선언이 호이스팅됩니다. 기본적으로 식별자는 선언된 범위 내에서 사용할 수 있습니다.

x = "global";
(function() {
    x; // not "global"
    {
        x; // not "global"
        let y; // not initialized
    }
    var x = "local";
    let y = "local";
});
로그인 후 복사

이 예에서 모든 변수 선언은 해당 범위(함수 및 블록) 내에서 호이스팅됩니다.

Temporal Dead Zone: Let 및 Const의 예외

var 선언과 var 선언의 차이점 let/const 선언은 초기화에 있습니다. var 및 기타 이전 스타일 선언은 바인딩이 범위의 상단에 생성될 때 정의되지 않음 또는 함수 개체로 초기화됩니다. 대조적으로, let 및 const 선언은 명령문이 실행될 때까지 초기화되지 않은 상태로 유지됩니다.

이로 인해 시간 데드존이라는 것이 생성됩니다. 이는 변수 생성과 변수 생성 및 생성 사이의 기간입니다. 초기화. 이 영역 내의 변수에 액세스하려고 시도하면 ReferenceError 예외가 발생합니다.

x = y = "global";
(function() {
    x; // undefined
    y; // ReferenceError: y is not defined
    var x = "local";
    let y = "local";
});
// Block where temporal dead zone applies
로그인 후 복사

호이스팅에서 Let과 Const 사이에는 차이가 없습니다

let 및 const 선언은 모두 다음을 따릅니다. 동일한 호이스팅 동작. 유일한 차이점은 const 변수는 선언 시 초기화되어야 하며 나중에 다시 할당할 수 없다는 것입니다.

위 내용은 JavaScript의 `var`, `let`, `const` 사이에서 호이스팅, 임시 데드존 및 초기화는 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿