반응형
자바 스크립트 지역 및 전역 변수 혼동
이 질문에 이미 답변이 있습니다.
저는 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
반응형
'Programing' 카테고리의 다른 글
| iOS 8 iPhone의 UIPopoverPresentationController (0) | 2020.10.21 |
|---|---|
| Node.js와 PHP를 사용하면 어떤 이점이 있습니까? (0) | 2020.10.20 |
| 자바 REST 구현 : Jersey 대 CXF (0) | 2020.10.20 |
| 커밋없이 Github의 한 줄에 댓글을 달았나요? (0) | 2020.10.20 |
| C ++ 연속 통합을위한 buildbot 대 hudson / jenkins (0) | 2020.10.20 |