Programing

자바 스크립트 지역 및 전역 변수 혼동

crosscheck 2020. 10. 20. 07:21
반응형

자바 스크립트 지역 및 전역 변수 혼동


저는 JavaScript를 처음 접했고 지역 및 전역 변수 범위에 대한 몇 가지 사례를 수행하고있었습니다. 다음은 내 코드 ( fiddle )입니다.

var myname = "initial"
function c(){
    alert(myname);
    var myname = "changed";
    alert(myname);
}
c();

첫 번째 경고가 호출되면 myname정의되지 않은 것으로 표시 됩니다. 그래서 내 혼란은 글로벌 인스턴스에 액세스 할 수없는 이유 myname이며 myname함수 내에서 정의하지 않으면 제대로 작동합니다.


Javascript에서 변수 선언은 자동으로 함수의 맨 위로 이동합니다. 따라서 통역사는 다음과 같이 보이게 할 것입니다.

var myname = "initial"
function c(){
    var myname;
    // alerts undefined
    alert(myname);
    myname = "changed";
    // alerts changed
    alert(myname);
}
c();

이것을 '게양'이라고합니다.

호이 스팅과 변수의 범위가 선언 된 함수라는 사실로 인해 이러한 혼동을 피하기 위해 모든 변수를 함수 맨 위에 나열하는 것이 표준 관행입니다.


전역 변수를 대체하지 않습니다. 무슨 일이 일어나고 있는지 "가변 호이 스팅"이라고합니다. var myname;, 함수 상단에 삽입됩니다. 변수를 사용하기 전에 항상 초기화하십시오. 다음을 시도하십시오.

var myname = "initial";

function c() {
    alert(myname);
    myname = "changed";
    alert(myname);
}

c();

참고 URL : https://stackoverflow.com/questions/19721313/javascript-local-and-global-variable-confusion

반응형