//globalA.js
module.exports = () => global.message;
//globalB.js
const A = require('./globalA');
global.message = '안녕하세요';
console.log(A());
다음 코드는 global객체를 활용하는 예제로 전역객체를 활용하는 방법이다.
globalB에서 global의 변수에 '안녕하세요'를 담고 a를 출력할시 '안녕하세요'가 출력된다.
//console.js
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
oustside: {
inside: {
key: 'value',
},
},
};
console.time('전체 시간');
console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있습니다');
console.log(string, number, boolean);
console.error('에러 메시지는 console.error에 담아주세요');
console.dir(obj, { colors: false, depth: 2});
console.dir(obj, { colors: true, depth: 1});
console.time('시간 측정');
for (let i = 0; i < 100000; i++){
continue;
}
console.timeEnd('시간 측정');
function b(){
console.trace('에러 위치 추적');
}
function a(){
b();
}
a();
console.timeEnd('전체 시간');
다음코드는 console함수의 다양한 기능들을 표현한 기능이다
console.time(레이블) : console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd사이의 시간을 측정합니다.
console.error(에러 내용) : 에러를 콘솔에 표시합니다.
console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용합니다.
첫 번째 인자로 표시할 객체를 넣고, 두 번째 인자로 옵션을 넣습니다.
옵션의 colors를 true로 하면 콘솔에 색이 추가되어 보기가 한결 편해집니다. depth는 객체 안의 객체를 몇 단계까지 보여줄지를 결정합니다.
기본값은 2입니다.
console.trace(레이블) : 에러가 어디서 발생했는지 추적 할 수 있게 해줍니다.
//timer.js
const timeout = setTimeout(() => {
console.log('1.5초 후 실행');
}, 1500);
const interval = setInterval(() => {
console.log('1초마다 실행');
}, 1000);
const timeout2 = setTimeout(() => {
console.log('실행되지 않습니다1');
}, 3000);
setTimeout(() => {
clearTimeout(timeout2);
clearInterval(interval);
}, 2500);
const immediate = setImmediate(() => {
console.log('즉시 실행');
});
const immediate2 = setImmediate(() => {
console.log('실행되지 않습니다2');
});
clearImmediate(immediate2);
다음코드는 타이머 기능을 제공하는 함수를 표현한 예제입니다.
중요한부분은
setImmediate - 콜백 함수 즉시 실행
setTimeout - 주어진 밀리초 이후 콜백 함수 실행
setInterval - 주어진 밀리초마다 콜백 함수 반복 실행
clearTimeout,clearInterval,clearImmediate - 각 함수 실행취소
//nestTick.js
setImmediate(() => {
console.log('immediate');
});
process.nextTick(() => {
console.log('nextTick');
});
setTimeout(() => {
console.log('timeout');
}, 0);
Promise.resolve().then(() => console.log('promise'));
다음 코드는 nextTick에대한 예제입니다.
process.nextTick은 setImmediate setTimeout보다 먼저 실행됩니다 다른 콜백들보다 우선시되는 함수 이부분은 마이크로태스크라고 따로 구분지어 부릅니다.
//exit.js
let i = 1;
setInterval(() => {
if (i === 5) {
console.log('종료!');
process.exit();
}
console.log(i);
i += 1;
}, 1000);
다음 코드는 단순히 노드를 수동으로 멈추게하는 기능입니다.