인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

sh lee님의 프로필 이미지
sh lee

작성한 질문수

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

POST, PUT, DELETE 요청 보내기

res.end() 앞 return 여부의 차이

작성

·

1.6K

0

아래는 res.end()앞에 return이 없는 경우입니다.

http.createServer(async (req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
        const data = await fs.readFile('./http.html');
        res.end(data);
      }

 

아래는 res.end()앞에 return이 없는 경우입니다.

http.createServer(async (req, res) => {
  
        const data = await fs.readFile('./restFront.html');
        res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
        return res.end(data); // res.end() 앞에 return이 있음.
      }

위 예시 말고도 코드 여러 군데에서 어떤건 return 이 들어가고 안들어가고 하더라고요. return이 있고 없고에 어떤 차이가 있는 걸까요?

감사합니다.

답변 2

3

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

기본적으로 함수의 끝에 있는 return은 있으나 없으나 차이는 없으나 명시적으로 저 부분에서 함수가 끝난다는걸 표시하는 겁니다. 그래서 실수로 res.end가 여러 번 호출되는 것을 막을 수 있습니다.

sh lee님의 프로필 이미지
sh lee
질문자

답변 감사합니다!!

0

res.end(data)가 실행되면 클라이언트에 응답을 보내고 요청/응답 싸이클을 종료하니까 return 필요 없습니다.

가독성 측면에서 코드 작성자 맘대로 하면 됩니다.

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

구체적으로 설명드리자면
if () {
res.send();
}
res.send();
같은 상황을 방지하는 것이라 보시면 됩니다. 이러면 에러나니까요.
if () {
return res.send();
}
return res.send();
이러면 절대 에러날 일이 없죠.

sh lee님의 프로필 이미지
sh lee

작성한 질문수

질문하기