카테고리 없음
변수는 let 또는 const로 선언할 때 호이스팅(hoisting)이 됩니까?
스택큐힙리스트
2024. 1. 3. 00:43
반응형
나는 ES6와 함께 잠시 놀고 있는데, 변수를 var
로 선언한 경우 예상대로 hoisted되는 반면...
console.log(typeof name); // undefined
var name = John;
...let
또는 const
로 선언된 변수는 hoisting에 문제가 있는 것 같습니다:
console.log(typeof name); // ReferenceError
let name = John;
그리고
console.log(typeof name); // ReferenceError
const name = John;
이것은 let
또는 const
로 선언된 변수가 hoisted되지 않는 것을 의미합니까? 여기에서 실제로 무슨 일이 일어나고 있습니까? 이 문제에 대해 let
과 const
사이에 어떤 차이가 있습니까?
답변 1
x = y = 글로벌;
(function() {
x; // undefined
y; // 참조 오류: y가 정의되지 않았습니다.
var x = 로컬;
let y = 로컬;
}());
let y;
문은 let y = undefined;
처럼 변수를 undefined
로 초기화합니다.
임시 데드 존은 구문적인 위치가 아닌 변수(범위) 생성과 초기화 사이의 시간을 의미합니다. 변수를 선언보다 위에 있는 코드(예를 들어 함수 몸체 또는 단순히 죽은 코드)에서 변수를 참조하는 것은 오류가 아니며, 변수 초기화 전에 변수에 접근하면(예를 들어 초기화하기도 전에 실행되는 호이스트된 함수 선언에서) 예외를 throw합니다.
이 문제에서
let
과const
사이에 차이가 있을까요?
아니오, 호이스팅과 관련하여 그들은 동일한 방식으로 작동합니다. 그들 사이의 유일한 차이점은 const
ant는 선언의 초기화 부분에서만 할당되고 할당할 수 있다는 것입니다 (const one = 1
, const one;
및 이후의 변경된 할당인 one = 2
는 모두 잘못된 것입니다).
1: var
선언은 여전히 함수 레벨에서만 작동합니다, 물론
답변 2
변수는 let 또는 const 키워드로 선언되었을 때 호이스팅(hoisting)될까요? 이 주제에 대해 SEO-conscious한 한국어 에세이를 작성해보겠습니다.---
제목: 호이스팅: let과 const로 선언된 변수는 호이스팅될까요?
서론:
프로그래밍 언어에서 변수는 값 또는 데이터를 저장하는 데 사용되는 중요한 개념입니다. JavaScript에서는 변수를 선언할 때 let과 const 키워드를 사용할 수 있습니다. 그렇다면 이러한 키워드로 선언된 변수는 호이스팅 될까요? 이번 에세이에서는 이 질문에 대해 자세히 알아보겠습니다.
본문:
호이스팅은 JavaScript에서 코드 실행 전에 변수 및 함수 선언이 메모리로 이동되는 개념을 말합니다. 일반적으로 var로 선언된 변수는 호이스팅 되지만, let과 const로 선언된 변수는 호이스팅되지 않습니다.
JavaScript에서 var 변수 호이스팅은 변수를 선언하기 전에도 해당 변수를 사용할 수 있다는 특징이 있습니다. 하지만 let과 const를 사용하여 선언된 변수는 블록 스코프에 종속되어 있기 때문에 호이스팅되지 않습니다. 블록 스코프란 if문, 반복문 또는 함수와 같은 코드 블록에서 변수의 범위가 제한되는 원리를 말합니다.
예를 들어, 다음과 같은 코드를 살펴보겠습니다.
```
console.log(x); // ReferenceError: Cannot access 'x' before initialization
let x = 5;
```
위의 코드에서 변수 x는 let으로 선언되었습니다. 즉, 호이스팅되지 않기 때문에 변수를 선언하기 전에 참조하면 ReferenceError가 발생합니다. 이는 코드의 실행 순서와 일치하여 JavaScript의 예측 가능성을 향상시킵니다.
const로 선언된 변수도 let과 마찬가지로 호이스팅되지 않습니다. 그러나 const로 선언된 변수는 선언과 동시에 값을 할당해야 하므로 참조 전에 초기화해야 합니다. 때문에 const 변수 역시 호이스팅과 관련된 ReferenceError를 발생시킵니다.
결론:
JavaScript에서 let과 const로 선언된 변수는 호이스팅되지 않습니다. 호이스팅은 var 변수에서만 발생하며, let과 const는 블록 스코프에 속하고 선언된 위치에서 초기화해야 합니다. 이러한 특징을 이해하고 적절히 활용하는 것은 JavaScript 개발자로서 필수적인 요소입니다.
이 에세이는 JavaScript의 변수 선언 및 호이스팅에 대한 훌륭한 이해를 제공하고자 작성되었습니다. let과 const로 변수를 선언할 때의 호이스팅이 어떻게 동작하는지 명확하게 설명되었으며, 이를 통해 더 나은 JavaScript 개발을 위한 기초를 다질 수 있을 것입니다.
반응형