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

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

Susan Sarandon
Susan Sarandon원래의
2024-12-03 15:50:14776검색
Why is my Global Variable Undefined Inside a JavaScript Function?
제공된 예에서 전역 변수 값은 초기 값 10으로 선언됩니다. 그러나 테스트 함수 내에서는 동일한 이름(값)을 가진 지역 변수도 할당된 값(기본값은 정의되지 않음) 없이 선언됩니다.

함수 내 첫 번째 console.log 문 전역 값에 액세스하려고 시도하지만 로컬 값이 이미 끌어올려져 있으므로 해당 값이 우선 적용됩니다. 결과적으로 첫 번째 호출은 정의되지 않은 것으로 인쇄됩니다. 이어서 함수 내의 두 번째 console.log 문은 로컬 값 변수(20)에 할당된 값을 표시합니다.

이 호이스팅 현상은 현재 실행 컨텍스트 내의 변수와 함수 모두에 적용됩니다. 할당이 아닌 선언만 호이스팅된다는 점을 이해하는 것이 중요합니다. 이는 변수가 해당 범위 전체에 걸쳐 액세스 가능하지만 코드가 할당문에 도달할 때까지 할당된 값을 갖지 않을 수 있음을 의미합니다.

예를 들어 다음 코드 조각을 고려하세요.

놀랍게도 이 코드는 함수 end가 테스트 변수의 값을 변경하는 것처럼 보임에도 불구하고 start를 인쇄합니다. 이는 end 함수 내에서 새로운 지역 변수 선언이 우선하고 전역 변수는 변경되지 않기 때문입니다.

변수 호이스팅은 코드를 단순화할 수 있지만 의도하지 않은 동작을 방지하려면 그 의미를 알고 있는 것이 중요합니다. 변수 범위를 적절하게 지정하고 호이스팅 메커니즘을 완전히 이해하면 코드 구조를 유지하고 잠재적인 오류를 방지하는 데 도움이 될 수 있습니다.

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

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