일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 네이버페이사기
- JavaScript
- 정직하게사세요
- 삼성무선청소기제트
- Hooks
- 구분
- 막탄
- autocomplate
- 중고나라사기
- 중고나라
- 스노쿨링
- ES6
- 사기
- plugin
- Webpack
- webpack.config.js
- 유효성검사
- 해외여행
- REACT
- 자동완성
- js
- 세부
- 스쿠버다이빙
- 맛사지
- 여행
- 정규식
- 중고거래사기
- 마사지
- 특수문자
- Today
- Total
Ryu.log
[ NodeJS 09 ] global 객체 본문
1. global 객체
window is not defined.. 찾을수 없다고나온다... window를 사용할 수가 없다.
그렇다면 Node에서는 전역 객체가 없는 것일까?... 아니다. Node에는 global이라는 새로운 전역 객체가 존재한다.
같은 방식으로 global을 찍어보면
global을 console.log()로 찍었을 때 위같은 정보들이 쏟아져나온다. ( 최신브라우저에서는 Node와 통일을위해 global객체를 반영했다. )
어짜피 쓰다 보면... 외워질 것이니 일단 각각이 무엇인지는 패스하고.
익숙한것 하나만 봐보자.
익숙한 setTimeout이 보인다.
브라우저 window객체에서 setTimeout을 사용할때, window.setTimeout이라 쓰지않고, 그냥 setTimeout만 쓰는 이유는
어짜피 전역 객체인 window는 생략 가능하기 때문이다.
Node에서도 마찬가지로 global을 생략할 수 있다.
global.setTimeout -> setTimeout
전역 객체라는 것은 어디에서나 접근가능한 것을 전역객체라 하는데, 설명보다는 코드로 한번보자.
먼저 globalA.js와 globalB.js를 만들어보자.
// nodeStudy/globalB.js global.message = '안녕하세요';
// nodeStudy/globalA.js module.exports = () => global.message;
globalB.js에서 global의 message에 "안녕하세요"를 대입했는데 이것을,
globalA.js에서 별다른 require같은것 없이 사용이 가능하다.
이유는 전역 객체이기 때문에 파일 간 global이 공유되기 때문이다.
이번에는 globalA.js에서 module.exports를 했으니 그것을 globalB.js 에서 다시 사용해보자.
// nodeStudy/globalB.js const A = require('./globalA') global.message = '안녕하세요'; console.log(A());
globalB.js에서 require되어 A라는 변수에 담기게 된다. 그렇다면 아래 console.log(A())의 결과를 예측해보자.
정상적으로 globalB.js에서 대입한 message속성을 globalA.js에서 받아 사용했다.
그렇다면 변수같은 것들을 선언할때 global을 사용하여 다 선언하면 더 쉽고, 좋지않을까 ? 라는 생각을 하게 되는데,
만약 그렇게 된다면.....
위사진을 보자 이전에 언급 했었지만, 기존 front-end 에서 사용했던 script 형식의 마구잡이 링크 방식과 별반차이가 없게된다.
그리고 누구나 접근가능한 global객체에는 누군가가 값을 바꿔버릴 수도 있다.
그런 이유로 global에 직접 값을 넣어서 사용 하는 일은 거의 없다고 보면되고,global이 모든파일에서 사용 가능하기 때문에 편하다고 생각할수도 있지만,이런 편함이 프로그래밍에서는 위험이 될 수 있기 때문에 사용하지 않는게 좋다.
'Prev-content' 카테고리의 다른 글
[ React redux 01 ] Redux의 소개 (0) | 2018.09.04 |
---|---|
[ NodeJS 10 ] console 객체 (0) | 2018.08.06 |
[ NodeJS 08 ] 모듈 시스템 (0) | 2018.07.30 |
[ NodeJS 07 ] async / await (0) | 2018.07.27 |
[ NodeJS 06 ] 프로미스(Promise) API (0) | 2018.07.26 |