[javascript] 함수 선언식 vs 함수 표현식
함수 선언식
function 함수이름(){
처리;
}
함수 표현식
var 변수 = function(){
처리;
}
함수 선언식과 함수 표현식의 차이
- 함수 선언식은 호이스팅 가능, 함수 표현식은 호이스팅 불가
- 호이스팅 : 호출이 선언보다 위에 있을시 선언을 위로 끌어올림
함수 표현식이 함수 선언식보다 갖는 이점
- 클로저
- 인자전달
- IIFE (즉시주입 함수 표현식)
클로저
- 함수가 종료되어도, 렉시컬 스코프의 index 와 같은 정보 유지됨
- 이벤트 핸들러는 반복문이 완료된 후에 실행됨.
- 반복문 도중에 올바른 값을 유지할려면 클로저가 필요함
인자전달
- 함수 표현식은 중간에 임시변수에 값을 할당 안하고, 함수에 직접 인자전달 할수 있음
IIFFE
- 함수와 변수가 전역 스코프에 영향을 미치지 않도록 방지하는 데 사용.
- IIFE 내의 모든 속성은 익명 함수로 범위가 지정됨.