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

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

DDD
DDD원래의
2024-12-04 22:53:12471검색

Why Are My Global JavaScript Variables Undefined Inside Functions?

JavaScript 변수 호이스팅: 정의되지 않은 전역 변수의 미스터리 발견

JavaScript 변수로 작업할 때 예상치 못한 동작에 직면하기 쉽습니다. 그러한 사례 중 하나는 전역 변수가 특정 범위 내에서 정의되지 않은 값을 갖는 것으로 나타나는 경우입니다. 함수.

예:

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

출력:

undefined
20

설명:

행동은 다음에서 비롯됩니다. JavaScript 변수 호이스팅은 변수 및 함수 선언을 현재 범위의 맨 위로 자동으로 이동합니다. 이는

  • 전역 변수 값이 테스트 함수의 맨 위로 끌어올려진다는 것을 의미합니다.
  • A 지점에서 프로그램은 아직 초기화되지 않은 로컬 값 변수.
  • B 지점에서 프로그램은 새로 초기화된 지역 변수의 값을 올바르게 인쇄합니다.

실제로 코드는 다음과 같이 작성된 것처럼 동작합니다.

var value;

function test() {
    console.log(value); // undefined
    value = 20;
    console.log(value); // 20
}

참고: 함수 선언도 호이스팅을 거칩니다. 이것이 변수 할당과 달리 함수가 선언되기 전에 호출할 수 있는 이유입니다.

결론:

자바스크립트 변수를 사용할 때는 변수 호이스팅을 고려해야 합니다. 개발자는 이 동작을 이해함으로써 코드에서 예기치 않은 정의되지 않은 값을 방지할 수 있습니다. 또한 Ben Cherry의 "JavaScript 범위 지정 및 호이스팅"과 같은 리소스를 통해 JavaScript의 기본 측면에 대한 추가 통찰력을 얻을 수 있습니다.

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

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