함수선언식
- 일반적으로 함수를 사용할 때는 아래 예시와 같이 함수를 선언하고 변수에 할당하여 사용하거나 직접 사용하는 방법을 통한다.
function example() {
var a = "example";
return a;
}
-
그러나 함수를 선언하는 경우에는 코드 실행시 자바스크립트가 var 선언문과 function 선언문을 스코프의 맨 위로 올려 VO(variable object)에 저장한다. 이를 Hoisting이라 한다.
-
Hoist가 되면 var 변수나 function을 코드 어디에서나 load 하는 것이 가능하다. 즉, 이 경우에는 변수명이나 함수명 혹은 함수 내 변수의 이름이 겹쳐 코드가 꼬일 수 있는 위험성이 존재하게 된다.
함수표현식
- 함수표현식은 아래와 같은 방식으로 사용된다.
var example = (function () {
var i = "interested";
return {
prop: i,
};
})();
console.log(example.prop); // 'interested'
-
함수표현식은 함수선언식과는 달리 코드 실행 시 전역화를 수행하지 않으며, 순서가 되면 함수를 즉시 실행하게 된다.
-
위의 예시에서 볼 수 있듯 변수에 함수표현식으로 함수를 저장하면 그 내부의 변수를 읽을 수 있다.
-
함수표현식은 다른 말로는 즉시실행함수(Immediately-invoked Function Expression)라고 한다.
함수표현식.. 왜 사용해야 하는가??
-
코드 전체의 꼬임을 방지할 수 있다.
-
코드의 초기화 부분에서 사용하면 다른 코드들과의 겹침을 방지할 수 있다.
-
너무 많은 변수 및 함수가 변수 객체(VO)에 저장되면 능률이 떨어질 수 있다. 함수표현식은 이를 방지한다.