Node로 서버도 만들고, 앱 도만들고, iot, 머신러닝...등 여러가지를 만들 수 있었던 이유는 Node자체가 가지고 있는 다양한 기능을 제공하기 때문입니다.
ex) module.exports를 바로 쓸 수 있었던 이유는 node 내의 내장 기능이기 때문입니다.
노드의 전역 개체
- 브라우저의 window같은 역할
- 모든 파일에서 접근 가능
- window 처럼 생략 가능 (console, require 등 도 global의 속성)
- 노드는 브라우저가 아니기 때문에 window, document 등이 작동하지 않음
global 속성에 값을 대입하면 다른 파일에서도 사용 가능함

하지만 쓰기 지양, 왜냐하면 module.exports등 안해서 편해 보일 순 있지만 파일이 많아질 경우 어디에서 속성을 추가했는지 찾기가 어려워 유지보수에 어려움 발생
set 메서드에 clear 메서드가 대응됨
setTimeout(콜백 함수, 밀리초) : 주어진 밀리초(1000분의 1초) 이후에 콜백 함수를 실행합니다.
setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행합니다.
setImmediate(콜백 함수) : 콜백 함수를 즉시 실행합니다.
clearTimeout(아이디) : setTimeout을 취소합니다
clearInterval(아이디) : setInterval을 취소합니다
clearImmediate(아이디) : setImmediate를 취소합니다.
setTimeout(콜백, 0) 이랑 setImmediate랑은 같음, 그런데 그냥 함수를 바로 실행하면 되지, 왜 setImmediate를 쓸까? 함수를 비동기적으로 실행하기 위해서입니다.
위와 같은 타이머 메서드들은 시간이 오래걸릴 수도 있는 작업들이기 때문에 바로 실행이 되는 것이 아닌, 백그라운드에서 태스크 큐로 간 후 이벤트 루프에 의해 호출 스택으로 가서 실행이 됨. 때문에 setImmediate도 취소가 가능하게 되는 것