Node 내장 객체

김무연·2023년 12월 11일

Backend

목록 보기
14/49

Node로 서버도 만들고, 앱 도만들고, iot, 머신러닝...등 여러가지를 만들 수 있었던 이유는 Node자체가 가지고 있는 다양한 기능을 제공하기 때문입니다.

ex) module.exports를 바로 쓸 수 있었던 이유는 node 내의 내장 기능이기 때문입니다.

global

노드의 전역 개체

  • 브라우저의 window같은 역할
  • 모든 파일에서 접근 가능
  • window 처럼 생략 가능 (console, require 등 도 global의 속성)
  • 노드는 브라우저가 아니기 때문에 window, document 등이 작동하지 않음

global 속성 공유

global 속성에 값을 대입하면 다른 파일에서도 사용 가능함

하지만 쓰기 지양, 왜냐하면 module.exports등 안해서 편해 보일 순 있지만 파일이 많아질 경우 어디에서 속성을 추가했는지 찾기가 어려워 유지보수에 어려움 발생

console

  • console.time, console.timeEnd : 시간 로그 남기기
  • console.error : 에러 로그
  • console.log : 평범한 로그
  • console.dir : 객체 로그
  • console.trace : 호출 스택 로그
  • console.table : 객체를 테이블 형식으로 이쁘게 보여 줌

타이머 메서드

set 메서드에 clear 메서드가 대응됨

  • setTimeout(콜백 함수, 밀리초) : 주어진 밀리초(1000분의 1초) 이후에 콜백 함수를 실행합니다.

  • setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행합니다.

  • setImmediate(콜백 함수) : 콜백 함수를 즉시 실행합니다.

  • clearTimeout(아이디) : setTimeout을 취소합니다

  • clearInterval(아이디) : setInterval을 취소합니다

  • clearImmediate(아이디) : setImmediate를 취소합니다.

setTimeout(콜백, 0) 이랑 setImmediate랑은 같음, 그런데 그냥 함수를 바로 실행하면 되지, 왜 setImmediate를 쓸까? 함수를 비동기적으로 실행하기 위해서입니다.

위와 같은 타이머 메서드들은 시간이 오래걸릴 수도 있는 작업들이기 때문에 바로 실행이 되는 것이 아닌, 백그라운드에서 태스크 큐로 간 후 이벤트 루프에 의해 호출 스택으로 가서 실행이 됨. 때문에 setImmediate도 취소가 가능하게 되는 것

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글