0
아래 코드 조각에는 왜 window.foo가 있지만 this.bar는 정의되지 않았습니까?JavaScript 개체 컨텍스트 및 함수
function foo() {
function bar() { };
console.log(this.bar);
}
console.log(window.foo);
foo.call({});
아래 코드 조각에는 왜 window.foo가 있지만 this.bar는 정의되지 않았습니까?JavaScript 개체 컨텍스트 및 함수
function foo() {
function bar() { };
console.log(this.bar);
}
console.log(window.foo);
foo.call({});
브라우저에서 창은 글로벌 개체이므로 섀도우가 아닌 한 모든 곳에서 사용할 수 있습니다. this
은 메서드로 불리는 함수 본문에서 유용한 것을 가리키고 있습니다. foo.bar() - bar
, this
이 foo
인 경우 또는 bar.call (...) 또는 bar.apply (...)가 호출되어 this
에 대한 인수가 있거나 함수 외부에있을 때 전역 개체 (창)를 가리키는 곳에서 모두 호출하십시오.
명시 적으로 foo.call ({})을 수행하여이 객체를 빈 Object로 설정합니다. 따라서 this.bar는 호출 중에 존재하지 않습니다.
JavaScript에서 this는 변수 범위와 아무 관련이 없기 때문에. 함수가 호출되는 방식에 따라 동적 값이 설정됩니다. 예외는 전역 환경이며,'this'는 전역 변수를 저장하는 전역'window' 객체를 참조합니다. –
'this'는'window'가 될'global' 객체의'bar' 메소드 나 객체를 찾고 있습니다. 'bar'는'global' 객체에서 정의되지 않았습니다. – Sethen
내게 가장 혼란스러운 것은 window.foo가 존재한다는 것입니다. 왜 글로벌 스코프에서 그런 일이 일어나지 만 각 하위 범위에서는 그렇지 않습니까? –