함수선언과 함수 표현

조회수 1495회

최근에 다른 사람의 자바스크립트 코드를 유지보수하기 시작했는데요. 버그를 고치고 기능을 추가하면서 코드를 좀더 일관성있게 고치려고 합니다.

이전의 개발자는 두가지 방식으로 코드를 함수를 정의했는데요. 이렇게 한것에 특별한 이유가 있는지 의문이 들어서 더 작업을 진행할수가 없게되었습니다.

두가지 방식은

var functionOne = function() {
    // Some code
};

function functionTwo() {
    // Some code
}

이런 식인데요. 각 방법의 이유는 무엇이고 각 방식들의 장단점이 무엇인지 궁금합니다. 저 두 정의 방식에서 어떤 방식으로는 되는데 다른 방식으로는 불가능한 그런게 있을까요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    차이점은 functionOne은 런타임에 정의되는 반면에 functionTwo는 스크립트 블록이 해석될때 정의됩니다. 예를 들면

    <script>
      // 에러발생 
      functionOne();
    
      var functionOne = function() {
      };
    </script>
    
    <script>
      //정상 실행
      functionTwo();
    
      function functionTwo() {
      }
    </script>
    

    이런 식으로 함수가 정의된것보다 위에서 함수를 호출할경우 functionOne() is not a function이라는 에러가 발생합니다. 반면에 두번째 방법은 잘 호출됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)