자바스크립트에서 함수를 정의하는 두 가지 방법
1. 함수 선언식
function myFunction() {
// 함수 내용
}
- 함수 표현식
const myFunction = function() {
// 함수 내용
};
화살표 함수(arrow function)는 함수 표현식(function expression)의 한 종류이다.
const myFunction = () => {
// 함수 내용
};
- 함수 선언식
- 함수 이름이 필요하다.
- 호이스팅에 영향을 받는다. (호이스팅 = 변수 및 함수 선언이 스코프의 맨 위로 옮겨지는 동작)
- 따라서 함수 선언식은 선언하기 전에 호출해도 정상 작동한다.
- 함수 표현식
- 변수에 할당하는 방식으로 정의된다.
- 함수 이름은 선택사항이며, 이름을 생략하면 익명 함수로 취급한다.
- 호이스팅의 영향을 받지 않는다.
- 함수 표현식은 함수 정의 이전에 호출하면 오류가 발생한다.
- 다른 변수와 마찬가지로 다른 함수에 전달될 수 있으며, 일급 함수로 취급될 수 있다.
즉, 함수를 변수에 할당하고 다른 함수의 인수로 전달하거나 반환값으로 사용할 수 있다.
- 함수 표현식을 사용하면 해당 컴포넌트가 할당되기 전에는 참조할 수 없다. 그래서 함수 표현식은 주로 콜백함수나 클로저 등에서 유용하게 사용된다.
- 함수 표현식은 더 유연하며, 모듈 시스템과 함께 사용할 때 이름 충돌 등을 방지할 수 있다.