본문 바로가기

JavaScript

[JavaScript] 함수 선언문과 함수 표현식

자바스크립트에서 함수를 선언하는 방식은 3가지가 있다.

 

1. 함수 선언문                                           

function a(){
	return 'a';
}

 가장 일반적으로 알고 있는 선언문의 형태이다. 호이스팅의 대상이된다.

 

 

2. 기명 함수 표현식

var a = function a(){
	return 'a';
}

 변수에 선언된 함수를 할당하는 것을 함수 표현식이라 한다. 기명 표현식은 함수명을 지정해 주는 함수 표현식이다.

 

 

3. 익명 함수 표현식

var a = function {
	retunr 'a'
}

 함수명을 지정하지 않는 함수 표현식이다.

 

 

함수 선언문을 사용하게 되면 전체가 호이스팅되지만 함수 표현식은 변수만 호이스팅되어 올라가고, 할당된 함수를 그대로 남아있게 된다. 호이스팅의 여부가 중요한 이유는 바로 실무에서의 차이이다. 실무에서는 협엄을 주로 하게 되는 데, 함수를 선언문으로 작성하게 된다면 동일 함수명을 가진 함수들 중 단 1개만이 적용되게 된다. 이는 프로그램을 원하지 않는 방향으로 흘러가게 한다. 또한 가독성 면에도 좋지 않기 때문에 함수 선언문보다는 함수 표현식을 쓰는 것을 권장한다.