this
및 실행 컨텍스트 에 대한 자습서를 따르고 있습니다. 이 코드가 Chrome 콘솔에서 제대로 실행되는 것을 확인했습니다.
var globalThis = this
function myFunc () {
console.log('globalThis: ', globalThis)
console.log('this inside: ', this)
console.log(globalThis === this)
}
myFunc()
// globalThis: Window {...}
// this inside: Window {...}
// true
그러나 노드 환경에서 동일한 코드를 실행하려고하면 다음과 같은 응답이 표시됩니다.
globalThis: {}
this inside: { console: [Getter],
global: [Circular],
process:
process {
title: 'node',
version: 'v8.16.2',
...
false
전역 노드 this
값이 브라우저 자바 스크립트 this
값과 달라야한다는 것을 이해 하지만, 질문은 왜 myFunc's this
값이 전역 값과 같지 않습니까?
노드 모듈의 전역 그래서 당신이 실행하면, 같은 모듈이기 때문입니다 console.log(this)
당신이 빈 객체 인 빈 모듈의 전역 범위를 참조하는 함수 외부에 {}
있지만 같은 실행할 때 console.log(this)
함수 내부 this
에 가고 전역 노드 범위 (콘솔, 전역, 프로세스 및 기타 많은 항목 포함)를 가리 킵니다. 이제 엄격 모드에있는 경우 함수 내부의 범위 undefined
는 기본값이 없기 때문입니다. 로컬 범위가 정의되었습니다.
전역 범위가 Window
객체 인 브라우저에서 훨씬 간단 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다