JavaScript에서는 함수를 두 가지 방법으로 정의할 수 있다. 하나는 function 키워드를 이용한 전통적인 선언 방식이고, 다른 하나는 const를 이용한 화살표 함수(Arrow Function) 방식이다. 특히 React 프로젝트에서는 이 두 방식의 사용법이 조금 다르게 정리되고 있다.
이번 글에서는 두 방식의 차이와, 각각을 언제 사용하는 것이 좋은지 정리해본다.
function handleClick() {
console.log('clicked')
}
this 컨텍스트를 가진다.const handleClick = () => {
console.log('clicked')
}
this를 바인딩하지 않고 부모 스코프의 this를 그대로 상속한다.코드 일관성과 간결함
화살표 함수는 짧고 명확해 읽기 쉽다. const를 사용해 재할당을 막는 것도 현대적인 스타일이다.
this 문제를 방지
화살표 함수는 별도의 this 컨텍스트를 생성하지 않기 때문에 클래스 컴포넌트 시절부터 안정성을 위해 널리 사용되어 왔다.
호이스팅 문제를 피함
선언된 이후에만 사용 가능하기 때문에 코드의 읽기 흐름이 명확해진다.
팀 스타일 가이드 권장 사항
Airbnb, Google 등 주요 JavaScript 스타일 가이드에서도 가능한 모든 함수를 const + 화살표 함수로 선언할 것을 권장한다.
컴포넌트 내부가 아니라 파일 레벨에서 독립적인 유틸리티 함수를 정의할 때는 오히려 function 키워드로 선언하는 것이 더 자연스럽고 명확할 때가 많다.
예를 들어 날짜 포맷터나 문자열 변환처럼 재사용되는 유틸성 함수는 function으로 선언하는 경우가 많다.
function formatDate(date) {
return date.toISOString().split('T')[0]
}
const + 화살표 함수로 선언하는 것이 현대적이다.function 키워드를 사용해 선언하는 것이 자연스럽다.요약:
컴포넌트 안에서는 const + 화살표 함수,
컴포넌트 밖(파일 레벨 유틸리티 함수)에서는 function 키워드.