'this'는 브라우저와 노드 환경에서 다르게 작동합니다.

티콜 리즈

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

OrderBy는 Chrome에서 다른 브라우저와 다르게 정렬됩니다.

분류에서Dev

목록의 Jquery 클릭 이벤트는 Firefox 및 기타 브라우저에서 다르게 작동합니다.

분류에서Dev

이 키워드는 NodeJS와 Vanila JavaScript간에 다르게 작동합니다.

분류에서Dev

for 루프의 setTimeout 내부 IIFE가 nodejs에서 브라우저와 다르게 동작하는 이유

분류에서Dev

Firefox 브라우저에서 다르게 작동하는 이미지 라인

분류에서Dev

NodeJS 코드는 브라우저를 통해 실행될 때와 터미널에서 curl을 통해 실행될 때 다르게 실행됩니다.

분류에서Dev

Ruby FileUtils.mkpath는 환경에 따라 다르게 작동합니다.

분류에서Dev

브라우저 환경에서 Puppeteer의 노드 환경으로 개체를 어떻게 반환합니까?

분류에서Dev

std :: variant는 MSVC와 gcc에서 다르게 작동합니다.

분류에서Dev

wc는 Unix와 Linux에서 다르게 작동합니다.

분류에서Dev

Selenium xpath는 Ruby와 Python에서 다르게 작동합니다.

분류에서Dev

이 코드는 IE를 제외한 다른 모든 브라우저에서 작동합니다.

분류에서Dev

다른 객체 내에서 객체를 펼칠 때 브라우저에서 노드와 다른 출력을 얻는 이유는 무엇입니까?

분류에서Dev

KeyboardInterrupt는 실행에 따라 다르게 작동합니다.

분류에서Dev

내 사이트가 Firefox에서 다른 모든 브라우저와 다르게 보이는 이유

분류에서Dev

메서드 .children () length는 함수 내부와 외부에서 다르게 동작합니다.

분류에서Dev

JavaScript의 location.reload ()는 로컬 Apache와 라이브 서버에서 다르게 작동합니다. 원인?

분류에서Dev

노드 검사기는 브라우저에서 아무것도 얻지 못합니다.

분류에서Dev

노드 검사기는 브라우저에서 아무것도 얻지 못합니다.

분류에서Dev

코드는 jsfiddle에서 작동하지만 브라우저에서는 작동하지 않습니다.

분류에서Dev

Google 서비스 광고는 광고를로드하는 동안 AdMob SDK와 다르게 작동합니까?

분류에서Dev

실행중인 노드는 앱 디렉토리에서만 올바르게 작동합니다.

분류에서Dev

position_dodge는 채우기 위치에 따라 다르게 작동합니다.

분류에서Dev

"/"에 대한 링크는 일부 브라우저에서만 작동합니다.

분류에서Dev

dict () 함수는 colab과 jupyter 노트북간에 다르게 작동합니다.

분류에서Dev

Android UI는 디스플레이 하드웨어에 따라 다르게 작동합니다.

분류에서Dev

htmlentities는 두 번 호출 될 때만 브라우저에서 작동합니다.

분류에서Dev

List <>는 디버그 모드에서 본 후 다르게 작동합니다.

분류에서Dev

document.write를 사용하여 만든 페이지에서 앵커를 클릭하면 Firefox는 다른 브라우저와 다르게 작동합니다. 해결 방법이 있습니까?

Related 관련 기사

  1. 1

    OrderBy는 Chrome에서 다른 브라우저와 다르게 정렬됩니다.

  2. 2

    목록의 Jquery 클릭 이벤트는 Firefox 및 기타 브라우저에서 다르게 작동합니다.

  3. 3

    이 키워드는 NodeJS와 Vanila JavaScript간에 다르게 작동합니다.

  4. 4

    for 루프의 setTimeout 내부 IIFE가 nodejs에서 브라우저와 다르게 동작하는 이유

  5. 5

    Firefox 브라우저에서 다르게 작동하는 이미지 라인

  6. 6

    NodeJS 코드는 브라우저를 통해 실행될 때와 터미널에서 curl을 통해 실행될 때 다르게 실행됩니다.

  7. 7

    Ruby FileUtils.mkpath는 환경에 따라 다르게 작동합니다.

  8. 8

    브라우저 환경에서 Puppeteer의 노드 환경으로 개체를 어떻게 반환합니까?

  9. 9

    std :: variant는 MSVC와 gcc에서 다르게 작동합니다.

  10. 10

    wc는 Unix와 Linux에서 다르게 작동합니다.

  11. 11

    Selenium xpath는 Ruby와 Python에서 다르게 작동합니다.

  12. 12

    이 코드는 IE를 제외한 다른 모든 브라우저에서 작동합니다.

  13. 13

    다른 객체 내에서 객체를 펼칠 때 브라우저에서 노드와 다른 출력을 얻는 이유는 무엇입니까?

  14. 14

    KeyboardInterrupt는 실행에 따라 다르게 작동합니다.

  15. 15

    내 사이트가 Firefox에서 다른 모든 브라우저와 다르게 보이는 이유

  16. 16

    메서드 .children () length는 함수 내부와 외부에서 다르게 동작합니다.

  17. 17

    JavaScript의 location.reload ()는 로컬 Apache와 라이브 서버에서 다르게 작동합니다. 원인?

  18. 18

    노드 검사기는 브라우저에서 아무것도 얻지 못합니다.

  19. 19

    노드 검사기는 브라우저에서 아무것도 얻지 못합니다.

  20. 20

    코드는 jsfiddle에서 작동하지만 브라우저에서는 작동하지 않습니다.

  21. 21

    Google 서비스 광고는 광고를로드하는 동안 AdMob SDK와 다르게 작동합니까?

  22. 22

    실행중인 노드는 앱 디렉토리에서만 올바르게 작동합니다.

  23. 23

    position_dodge는 채우기 위치에 따라 다르게 작동합니다.

  24. 24

    "/"에 대한 링크는 일부 브라우저에서만 작동합니다.

  25. 25

    dict () 함수는 colab과 jupyter 노트북간에 다르게 작동합니다.

  26. 26

    Android UI는 디스플레이 하드웨어에 따라 다르게 작동합니다.

  27. 27

    htmlentities는 두 번 호출 될 때만 브라우저에서 작동합니다.

  28. 28

    List <>는 디버그 모드에서 본 후 다르게 작동합니다.

  29. 29

    document.write를 사용하여 만든 페이지에서 앵커를 클릭하면 Firefox는 다른 브라우저와 다르게 작동합니다. 해결 방법이 있습니까?

뜨겁다태그

보관