함수선언과 함수 표현


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

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

두가지 방식은

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

function functionTwo() {
    // Some code
}

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

  • 2016년 02월 24일에 작성됨

조회수 187


1 답변


좋아요
0
싫어요
채택취소하기

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

<script>
  // 에러발생 
  functionOne();

  var functionOne = function() {
  };
</script>

<script>
  //정상 실행
  functionTwo();

  function functionTwo() {
  }
</script>

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

  • 2016년 02월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close