inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

var와 global에 대해 질문드리고 싶습니다

해결된 질문

286

Like me black

작성한 질문수 65

0

강사님 안녕하세요

https://inf.run/iURH
지난번 질문도 다시 확인해봤는데, 이해가 어려워서 가르쳐주시면 감사하겠습니다

아래의 소스코드의 1행에서 var를 붙였을 때와 안붙였을 때, 출력결과가 달라져서 질문드리고 싶습니다
소스코드는 맨 아래에 첨부했습니다
1번째 질문부터 3번째 질문까지 1행의 name1 변수 앞에 var 붙이고 안붙이고 let 붙이고 차이입니다

1번째로 드리고 싶은 질문은,
아래의 이미지처럼

1행의 name1 앞에 var를 붙였을 때

this.name1이 undefined로 나타나는 이유를 질문드리고 싶습니다.

this가 global 이므로, 1행의 name1이 출력될 줄 알았는데 아니어서 질문드리고 싶습니다.

 

2번째로 드리고 싶은 질문입니다.

이번에는 1행에서 var를 지웠습니다

this는 global 이어서 this.name1의 출력결과가 name1으로 나올 것 같았습니다
그런데 왜 이번에는 this.name1의 출력결과가 name1이 아닌 aaa로 나오는지 질문드리고 싶습니다

 

3번째로 드리고 싶은 질문입니다

이번에는 1행에 let을 붙였습니다

여기서 global.name1 이 왜 undefined 로 나오는지 이해가 어려워서 질문드리고 싶습니다

 

 

4번째로 드리고 싶은 질문은

global과 module.exports 중 어느 것이 더 상위 객체인지 질문드리고 싶습니다

 

너무 긴 질문을 읽어주셔서 감사합니다

아래는 소스코드입니다

let name1 = 'name1';
 const objectA = {
     name1: 'objectA.name1',
     getname: function(){
        name1 = "aaa";
         const name2 = 'name2';
         console.log(`this.name1: ${this.name1}`);
         function fullname() {
             // this: global
             console.log(`>> name1:${name1}, name2:${name2}, this.name1:${this.name1}, this.name2:${this.name2}, this${this}`);
             return `>>>> objectA.name1 + name2: ${objectA.name1} ${name2}`;
         };
         return fullname();
     },
}
 
console.log(objectA.getname());
 

 

 

 

mongodb mysql nodejs Sequelize

답변 1

1

제로초(조현영)

fullName의 this.name1은 global.name1입니다. 설명은 제 유튜브에 있고요.

1. 노드에서 var은 global에 등록되지 않습니다. 그래서 global.name1이 undefined입니다.

2. name1 = 'name1', name1 === 'aaa'를 하면 변수 선언이 아니라 기존 속성 수정입니다. global.name1을 수정한 겁니다.

3. let은 브라우저에서도 global에 영향을 미치지 않습니다.

4. global이 더 상위입니다.

0

Like me black

늦은 시간에도 가르쳐주셔서 감사합니다

var let const 같은 예약어가 안붙은

name1= 'aaa'; 

같은

변수 선언및 초기화는

var 타입의 성질 + global에 등록

이라고 이해해도 되는지 질문드리고 싶습니다

 

0

Like me black

올려주신 유튜브 강의도 보고 있는데, 아직 다 못봤네요

계속 유튜브에 올려주신 내용을 공부하겠습니다

0

제로초(조현영)

var let const가 안 붙은건 변수 선언이 아닙니다. 속성 수정입니다. 기존에 선언한 변수가 없다면 global 객체의 속성을 수정하는 거고요.

0

Like me black

그러면

자바스크립트 파일 시작할 때

1, 2, 3행에

a=10;

b=20;

C='hello';

이렇게 쓰면

global 객체의 속성으로 a,b,c가 추가됨과 동시에

a,b,c의 값으로 10, 20, 'hello' 가 되는건지 질문드리고 싶습니다

0

Like me black

https://www.inflearn.com/questions/465724

지난번에 질문드렸을 때는

d=4가

객체의 속성이 아니고 var 변수가 된다고 이해했어서요

0

제로초(조현영)

저게 브라우저였으면 d = 4는 window.d = 4였고 var a도 window.a였어서 그렇게 답했습니다. 이게 노드 강의가 아니라 자바스크립트 기본 강좌로 착각했네요.

0

Like me black

아 브라우저와 노드의 차이를 가르쳐주신 말씀 중에 window와 global 이야기 해주신 게 기억이 나는데, 연결이 되는군요! 가르쳐주셔서 감사합니다

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

932

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

388

1

리뉴얼 강의 및 공부 방법

0

591

1

jwt decode

0

1139

1

node.js 교과서 3판 질문드립니다

0

399

1

passport와 jwt

0

439

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

360

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

491

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

512

2

nunjucks res.render('error'); 작동을 안합니다.

0

521

1

질문있습니다.

0

349

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3547

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

431

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

294

1

Strategy의 done에 대해 질문드립니다.

0

375

1

안녕하세요 fs 권한 관련 질문드립니다

0

457

1

시퀄라이즈 연결질문...

0

511

2

res.setHeader vs res.cookie

0

1799

3