노드라는 놈 아직도 생소하다
이번에는 노드에서 기본적으로 제공하는 내장 객체들을 정리해보려 한다
브라우저의 window와 같은 전역 객체!
전역 객체이므로 모든 파일에서 접근 가능.
노드 콘솔에 로그를 기록하는 colsole 객체도 원래는 global.console인데 global이 생략된 것
console 객체는 보통 디버깅을 위해 사용
개발 중 변수에 제대로 된 값이 들어 있는지 확인하기 위해 사용
에러 발생 시 에러 내용을 콘솔에 표시
코드 실행시간을 알아보기 위해서도 사용
대표적으로 console.log 메서드가 있다.
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
outside: {
inside: {
key:'value',
},
},
};
console.time('전체 시간');
console.log('로그 출력하기');
console.log(string, number, boolean);
console.error('에러 메시지 출력하기');
console.table([{name: '세아', birth: '1996'}, {name: '짱구', birth: '1994'}]);
console.dir(obj, {colors: false, depth:2});
console.dir(obj, {colors: true, depth:1});
console.time('시간 측정');
for (let i=0; i<100000; i++) {}
console.timeEnd('시간 측정');
function b() {
console.trace('에러 위치 추적');
}
function a() {
b();
}
a();
console.timeEnd('전체 시간');
실행 결과

이 타이머 함수들은 모두 아이디를 반환합니다. 아이디를 사용하여 타이머를 취소할 수 있습니다.
timer.js _________________________________________________________________
const timeout = setTimeout(() => {
console.log('1.5초 후 실행');
}, 1500);
const interval = setInterval(() => {
console.log('1초마다 실행');
}, 1000);
const timeout2 = setTimeout(() => {
console.log('실행되지 않습니다');
}, 3000);
setTimeout(() => {
clearTimeout(timeout2);
clearInterval(interval);
}, 2500);
const immediate = setImmediate(() => {
console.log('즉시 실행');
});
const immediate2 = setImmediate(() => {
console.log('실행되지 않습니다');
});
clearImmediate(immediate2);
__________________________________________________________________________

console.log(__filename);
console.log(__dirname);
현재 파일의 이름과 경로가 표시됨
console.log(this);
console.log(this === module.exports);
console.log(this === exports)
function whatIsThis() {
console.log('function', this === exports, this === global);
}
whatIsThis();
최상위 스코프에 존재하는 this는 module.exports (또는 다른 exports 객체) 를 가리킴. 함수 선언문 내의 this는 global 객체를 가리킴.
