[javascript] 함수 선언식 vs 함수 표현식

최대 1 분 소요

함수 선언식

function 함수이름(){
    처리;
}


함수 표현식

var 변수 = function(){
    처리;
}



함수 선언식과 함수 표현식의 차이

  • 함수 선언식은 호이스팅 가능, 함수 표현식은 호이스팅 불가
    • 호이스팅 : 호출이 선언보다 위에 있을시 선언을 위로 끌어올림



함수 표현식이 함수 선언식보다 갖는 이점

  • 클로저
  • 인자전달
  • IIFE (즉시주입 함수 표현식)


클로저

  • 함수가 종료되어도, 렉시컬 스코프의 index 와 같은 정보 유지됨
  • 이벤트 핸들러는 반복문이 완료된 후에 실행됨.
  • 반복문 도중에 올바른 값을 유지할려면 클로저가 필요함

인자전달

  • 함수 표현식은 중간에 임시변수에 값을 할당 안하고, 함수에 직접 인자전달 할수 있음

IIFFE

  • 함수와 변수가 전역 스코프에 영향을 미치지 않도록 방지하는 데 사용.
  • IIFE 내의 모든 속성은 익명 함수로 범위가 지정됨.