>웹 프론트엔드 >JS 튜토리얼 >전역 JavaScript 변수가 함수 내에서 정의되지 않은 것으로 나타나는 이유는 무엇입니까?

전역 JavaScript 변수가 함수 내에서 정의되지 않은 것으로 나타나는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-09 08:27:07824검색

Why Does My Global JavaScript Variable Appear Undefined Inside a Function?

JavaScript 변수 호이스팅: 정의되지 않은 전역 값 탐색

이 문서에서는 JavaScript에서 전역 변수의 놀라운 동작, 특히 전역 변수가 함수 내의 정의되지 않은 값.

사례:

아래 예시에서는 전역변수 값이 10으로 초기화되어 있습니다. 그러나 테스트 함수 내에서 접근하면 undefine이 로그됩니다.

var value = 10;
function test() {
    //A
    console.log(value);
    var value = 20;

    //B
    console.log(value);
}
test();

출력 :

undefined
20

인양 중 JavaScript:

이 동작의 이면에 있는 현상을 JavaScript 변수 호이스팅이라고 합니다. 이는 함수 내에서 선언된 모든 변수가 사용 후에 선언된 경우에도 "호이스팅"되거나 함수 범위의 맨 위로 이동됨을 나타냅니다.

위의 예에서 값 변수는 함수 범위의 맨 위로 끌어올려집니다. 테스트 기능의 상단. 그러나 선언만 해제되고 할당(초기화)은 해제되지 않습니다. 따라서 console.log(value)가 호출되면 호이스팅되었지만 할당되지 않은 변수에 액세스하여 unundefined가 됩니다.

설명:

이 동작은 다음을 통해 이해할 수 있습니다. 해당 코드:

var value; // Global
function test() {
    console.log(value); // Accessing the hoisted but undefined value

    value = 20; // Local assignment
    console.log(value); // Accessing the locally assigned value
}

참고: 게양 함수:

호이스팅은 함수 선언에도 적용됩니다. 함수가 선언되기 전에 호출되면 해당 식별자에 아직 할당되지 않았더라도 계속 실행됩니다.

예:

test("Won't work!"); // Error

test = function(text) { alert(text); }; // Function assignment

테스트를 위한 첫 번째 호출 해당 지점에서 함수가 선언되지 않았기 때문에 실패합니다. 그러나 첫 번째 호출 이후에 함수가 호이스팅되고 할당되므로 두 번째 호출은 성공합니다.

결론:

JavaScript의 호이스팅 메커니즘은 특히 액세스할 때 예상치 못한 결과를 초래할 수 있습니다. 함수 내의 전역 변수. 강력하고 오류 없는 JavaScript 코드를 작성하려면 호이스팅의 미묘한 차이를 이해하는 것이 중요합니다.

위 내용은 전역 JavaScript 변수가 함수 내에서 정의되지 않은 것으로 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.