자바 스크립트 호이 스팅 및 글로벌 범위 선언
Aug 21 2020
자바 스크립트에서 컴파일 단계는 모든 선언을 찾아 적절한 범위와 연결합니다.
사례 1
a = 2;
console.log(a);
Strict 모드에서 사용하지 않는 경우 스 니펫은 실제로 다음과 같이 처리되는 것으로 간주됩니다.
var a;
a = 2;
console.log(a);
출력 : 2
CASE2
console.log () 아래에서 선언이 발생하면
console.log(a);
var a = 2;
여기 1 행에서 : 컴파일러는 해당 범위에서 a 선언이없는 경우이를 확인하고 전역 범위는 하나를 할당하고 동일한 코드가 다음과 같이 다시 가정됩니다.
var a;
console.log(a);
a = 2;
출력 : 정의되지 않음 // 인터프리터가 콘솔을 읽는 동안 값이 할당 되지 않았 으므로
CASE3
console.log(a);
a = 2;
출력 : RefErr
이것이 정의되지 않은 참조 오류가 발생하는 이유는 무엇입니까?
답변
1 AbhishekJain Aug 21 2020 at 14:19
처음 두 경우를주의 깊게 살펴보면 항상 변수를 선언하고 a
JavaScript에서는 선언 만 끌어 올립니다.
즉,에서 Case 3
변수 a
는 선언되지 않으므로 여기에서 호이 스팅이 불가능합니다. 이를 통해 a
범위에 이름 에 의한 변수가 없으므로 ReferenceError
.
ReferenceError 의 설명을 보면 다음과 같습니다.
ReferenceError 객체는 존재하지 않는 변수가 참조 될 때 오류를 나타냅니다.
1 Quentin Aug 21 2020 at 14:12
암시 적 전역 은var
진술을 의미 하지 않습니다 . 그들을 게양하지 않습니다.