JS에서 어휘 범위와 실행 컨텍스트에 대해 배우고 질문을 보았습니다.외부 환경을 참조 할 때 왜이 특정 변수에 액세스 할 수 없습니까?
키워드 this
에 대한 나의 이해는 제한적일 수 있지만 모든 함수의 현재 실행 컨텍스트에서 모든 변수를 참조하는 것으로 나타났습니다.
function a(){
function b(){
console.log(this);
}
var myVar = 2;
b();
}
var myVar = 100;
a();
:이 예를 들어 1
이제 값에 할당됩니다 myVar에에 콘솔 로그를 얻을 수 있습니다, 여기에
function b(){
console.log(this);
}
var myVar = 1;
b();
:
이 예제를 고려
함수 b가 호출되면 100에 할당 된 myVar에 대한 참조가 표시됩니다. 2에 할당 된 myVar에 대한 참조가없는 이유는 무엇입니까?
'this'가 현재 함수의 어휘 환경을 나타내지 않습니까? 이 경우 함수 b는 전역 환경이 아닌 함수 a로 묶입니다.
은 (는) 함수 a의 상황에서 b가 아닙니까? 따라서 b를 함수 a에서 외부 환경에 대한 참조로 함수? –
@ user3882106 - 아니요. 앞에서 말했듯이 컨텍스트는 선언 된 곳이 아닌 함수가 호출되는 방식에 따라 결정됩니다. http : // stackoverflow를 참조하십시오.co.kr/questions/3127429/how-does-this-keyword-work를 참조하십시오. 컨텍스트와 범위를 혼동하지 마십시오. – Quentin