인프런 커뮤니티 질문&답변

재원허님의 프로필 이미지
재원허

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

모듈 만들기

module 관련 질문입니다!

작성

·

142

0

제로초님의 var.js, func.js, index.js에서 func.js 파일에 console.log('func.js 파일') 한 줄을 추가했습니다.

// func.js
const { odd, even } = require('./var');
console.log('func.js 파일');

function checkOddOrEven(num) {
	if (num % 2) { // 홀수면(1 -> true)
		return odd;
	}
	return even;
}

module.exports = checkOddOrEven;

그리고 node index 를 실행해봤더니

index.js 파일에서 checkOddOrEven() 함수만 checkNumber에 할당되는 줄 알았는데 결과가 console.log('func.js 파일');도 같이 실행되네요...
func.js 파일에 있는 checkOddOrEven() 함수 밖에 있는 console.log('func.js 파일') 까지 실행되는 이유가 궁금합니다!

 

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

원래 require하면 require한 해당 파일 전체가 실행됩니다. 해당 파일 전체가 실행되어야 export되는 부분이 무엇인지도 알 수 있으니까요.

module.exports나 require가 특수한 게 아닙니다. 똑같이 한줄한줄 실행해서 module.exports나 exports에 대입된 객체를 require로 가져오는 것입니다.

재원허님의 프로필 이미지
재원허
질문자

답변 감사합니다! 그러면 require한 해당 파일 전체가 실행되고 func.js 파일에서 module.exports에 할당한 checkOddOrEven() 함수만 index.js에 checkNumber에 할당되다고 이해하면 되는 건가요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 맞습니다.

재원허님의 프로필 이미지
재원허
질문자

알려주셔서 감사합니다!!ㅎㅎㅎ

재원허님의 프로필 이미지
재원허

작성한 질문수

질문하기