>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수 호이스팅 및 범위 지정은 변수 덮어쓰기에 어떤 영향을 줍니까?

JavaScript 함수 호이스팅 및 범위 지정은 변수 덮어쓰기에 어떤 영향을 줍니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-24 03:02:13753검색
How Does JavaScript Function Hoisting and Scoping Affect Variable Overwriting?
이 코드를 실행하면 의아해 보일 수 있는 "1" 경고를 발견할 수 있습니다.

함수 호이스팅은 함수 선언을 해당 범위의 시작 부분으로 끌어올리는 중요한 개념입니다. 이는 위의 코드가 다음과 같이 효과적으로 다시 작성되었음을 의미합니다.

이상하게도 함수 내의 함수 a()는 변수 선언(var a = function () {};)과 유사하게 작동합니다. . 다음을 고려하십시오.

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}

b();
alert(a);

두 버전 모두 완전히 동일한 결과를 산출합니다.

기본적으로 코드는 다음을 수행합니다.

function b() {
  function a() {}
  a = 10;
  return;
}

핵심 사항은 함수 호이스팅과 변수 범위 지정은 상호 작용하여 이 동작을 생성합니다. 내부 함수는 지역 변수 a를 생성하는 반면, 함수 선언 자체는 함수를 맨 위로 승격시킵니다. 이는 궁극적으로 함수 내 변화에 영향을 받지 않는 전역적으로 정의된 존재로 이어집니다.

위 내용은 JavaScript 함수 호이스팅 및 범위 지정은 변수 덮어쓰기에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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