Loading [MathJax]/jax/output/HTML-CSS/config.js

자바스크립트 - 함수 호이스팅을 이용한 코드 정리

시스템 2023. 12. 3. 01:37

함수 호이스팅 적용 전

app.post("/login", function (req, res) {
  db.select(
    "users",
    { where: { email: req.body.email } },
    function (err, user) {
      function end(user) {
        req.session.user = user;
        res.redirect("/");
      }

      if (user && user.password === req.body.password)
        return end(user);

      db.insert(
        "users",
        {
          email: req.body.email,
          password: req.body.password,
        },
        function (err, user) {
          end(user);
        }
      );
    }
  );
});

 

end 함수가 상위에 선언되어 있어, 가독성이 떨어진다.

자바스크립트의 호이스팅을 이용하면 다음과 같이 활용할 수 있다.

 

app.post("/login", function (req, res) {
  db.select(
    "users",
    { where: { email: req.body.email } },
    function (err, user) {
      if (user && user.password === req.body.password)
        return end(user);

      db.insert(
        "users",
        {
          email: req.body.email,
          password: req.body.password,
        },
        function (err, user) {
          end(user);
        }
      );
      
      function end(user) {
        req.session.user = user;
        res.redirect("/");
      }
    }
  );
});

 

end 함수를 아래 쪽에 배치하여 핵심적인 로직을 상위에 위치시켜 가독성을 높인다.

'시스템' 카테고리의 다른 글

노트-react 디자인 패턴 고려 사항: 기능 재사용  (0) 2024.01.07
뷰와 로직의 분리: 시작 단계, 문제 인식  (1) 2024.01.07
함수 조합  (0) 2023.11.29
개발 시 환경 변수 적용  (0) 2023.11.24
시맨틱 웹  (0) 2023.11.11