NodeJS에서 실행중인 .js 파일이 있습니다. 나는이 파일을 실행하면자바 스크립트에서 (어휘) 변수 범위를 이해하는 데 도움이 필요합니다.
var ctry = "America";
function outer(msg) {
console.log(msg + " " + ctry) ;
var ctry = "Canada" ;
}
outer("God Bless");
, 나는 "하나님은 미국을 축복"볼 것으로 예상하지만 대신에, 나는 "하나님은 정의되지 않은 축복"을 참조하십시오 여기 내 파일의 내용이다.
내 var ctry = line을 주석 처리하면 "God Bless America"가 표시되고 console.clog를 console.log 위에 놓으면 "God Bless Canada"가 표시됩니다. 이 마지막 두 경우는 논리적 인 것처럼 보이지만 console.log 다음에 var ctry의 정의가 위의 코드에서 underfined로 설정되는 이유는 무엇입니까?
명확하게하기 위해 모든 var 선언은 함수의 맨 위로 올라갑니다. 실제 할당은 작성된 행에서 발생합니다. 변수 var를 사용했기 때문에 전역 변수를 사용하는 대신 변수를 지역 변수로 다시 선언해야합니다. 키워드 var로 ctry를 다시 선언하지 않았다면 전역 변수를 사용하여 예상했던대로 작동했을 것입니다. – dqhendricks
예. 나는 함수 정의가 올라간다고 생각했지만 var 선언 (지역 변수)에 대해서도 몰랐다. 고맙습니다 – bachposer