inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Javascript ES6+ 제대로 알아보기 - 초급

this

왜 node 환경과 브라우저 환경에서 전역 this의 동작이 다른가요?

485

hyuk22

작성한 질문수 6

0

강의 중간에 나온 함수에서 `this.value = 3`이 브라우저 환경에선 window.value로 할당되는 반면 노드 환경에서는 왜 그렇게 동작하지 않는지 궁금합니다.

javascript es6

답변 6

0

hyuk22

아 그런거군요ㅎㅎ 답변감사합니다!

0

정재남

아아, 이제야 질문을 제대로 이해했네요. 처음부터 강의영상의 어떤 부분에 관한 질문인지를 표기해주셨으면 훨씬 빨리 해결되었을텐데 ^^;

강의 영상에서 나오는 결과값은 Quokka 라고 하는 VSCode 라이브러리가 실행한 결과값입니다. 이녀석은 별도로 노드 환경을 구성해서 결과를 표기하는데, 일반적으로 node를 직접 열어서 실행하는 것이 아니라 iframe처럼 내장 프레임을 만들고 그 프레임 안에서 코드를 실행시키기 때문에, 전역객체의 결과에 대해서는 정상적인 실행을 통해 확인할 떄와 값이 달라지는 경우가 종종 발생합니다.

이는 라이브러리의 실행 환경이 달라서 발생한 문제인건데, 지금 들어보니 강의 당시에 제가 '노드 환경이라서 결과가 다르다'면서 설명을 넘어가버렸었군요. 지적 감사합니다.

노드 버전과는 관계가 없습니다. ES6를 지원하는 한은 (제 기억으론 6버전 이상) 모두 동일한 결과를 얻을 수 있습니다.

0

hyuk22

친절한 답변 감사합니다. 저는 global 객체의 프로퍼티로 할당되는 것 까진 이해했는데 이 강의 1:55 부분에서 obj의 setValue 메소드 안에 있는 즉시실행 함수안에서 this.value = 3 을 했는데 console.log(value)했더니 0이 나오길래 global.value = 3 이 된게 아닌가 해서 물어봤습니다. 제 노드 환경에선 value가 3이라고 잘 출력되네요. 재남님이 하실 때는 버전이 달라 동작방식이 틀렸던 건가요?

0

정재남

네 맞습니다. nodejs 환경의 함수 내부에서 `this.value = 3` 구문을 추가하고 함수를 호출하면 global.value에 3이 할당됩니다.

function a () {
    this.value = 4;
}
a();

console.log(value, this.value, global.value);    // 4 4 4

 

0

hyuk22

그러면 nodejs환경에선 global.value에 할당되어야 하는 것 아닌가요?

0

정재남

'전역객체'라는 객체는 자바스크립트 구동 환경에서 제공하는 객체를 바라보도록 되어있기 때문입니다.

브라우저 환경에서는 window라는 객체가 전역객체를 바라보는 반면,

node.js 환경에서는 global 이라는 객체를 바라보도록 되어있습니다.

프로토타입 체이닝에 대해서

0

376

1

react 사용할 때 destructuring assignment라고 하는거 진짜 많이 사용 했는데 신기합니다.

0

520

1

2023-10-30일 기준 Object Rest/Spread Properties 적용 됬나봐요. 짱신기

0

336

1

제가 이해한 부분이 혹시 맞는지 알 수 있을까요?

0

310

2

블록스코프 내에서 펑션을 선언해서 사용하는경우가 있나요?(실무)

0

346

1

클래스에서 화살표함수?

0

1218

2

default parameter TDZ

0

278

1

강의 자료

1

304

2

전개 연산자 얕은 복사 질문

0

276

1

궁금한게 있는데요 ..

0

305

2

궁금한게 잇는데요 여기서 this는 array값을 출력해주나요?

0

357

1

template literal 강의에서의 reduce 메소드

0

310

2

다운로드 받은파일

0

284

1

const 이럴때도 사용하나요?

0

384

1

순서정렬

0

233

1

함수선언문 말고 arrow function

0

259

1

this바인딩 질문

1

265

1

에로우함수 new.target

0

206

2

함수표현식질문

0

222

1

rest parameter장점

0

310

1

if(exps[i])

0

190

1

좋은강의 감사합니다 이거는 호이스팅이 실행안되는거 같은데

0

302

3

해체하여 적용하려는 대상은 해체하는 대상의 타입에 매칭해야하나요?

0

170

1

강의노트 없습니다.

0

231

1