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 중국어 웹사이트의 기타 관련 기사를 참조하세요!