-
[React] 함수 선언문 vs 화살표 함수(Arrow Function)Web/React 2024. 12. 4. 18:08
- 함수 선언문 vs 화살표 함수
- 함수 선언문 (Function Declaration)
- 화살표 함수 (Arrow Function)
- 주요 차이점
- 리액트에서의 사용 예시
자바스크립트, React에서 함수 선언문과 화살표 함수는 함수를 정의하는 두 가지 주요 방식이다.
둘은 기본적인 문법 차이부터, this 바인딩 방식, 호이스팅 처리까지 여러 면에서 차이를 보인다.
특히, React와 같은 모던 웹 개발에서 두 방식은 각기 다른 상황에서 유용하게 사용된다.
이번 포스팅에서는 함수 선언문과 화살표 함수의 특징을 비교하고,
각각의 장단점과 실용적인 실용적인 사용 사례를 살펴보고자 한다.
또한, React에서 두 방식의 차이가 어떻게 컴포넌트 개발에 영향을 미치는지에 대해서도 다루어,
개발자들이 보다 효율적으로 함수를 선택하고 활용할 수 있도록 도와줄 것이다.
- 함수 선언문 vs 화살표 함수
리액트에서 함수 선언문(function declaration)과 화살표 함수(arrow function)의 차이는
주로 this 바인딩과 문법에서 나타난다.
각 방식의 특징을 비교해 보도록 하겠다.
- 함수 선언문 (Function Declaration)
function MyComponent() { return <div>Hello, World!</div>; }
- 문법
- function 키워드를 사용하여 함수를 선언한다.
- this 바인딩
- 함수 선언문은 호출될 때 this가 동적으로 바인딩된다.
- 즉, this는 함수가 호출될 때의 컨텍스트(객체)에 따라 다르게 설정된다.
- 호이스팅(hoisting)
- 함수 선언문은 호이스팅된다.
- 즉, 함수 선언이 코드의 어디에 있든 상관없이 호출할 수 있다..
- 화살표 함수 (Arrow Function)
const MyComponent = () => { return <div>Hello, World!</div>; }
- 문법
- () => {} 형태로 간단하게 작성합니다. 화살표 함수는 주로 익명 함수로 사용된다.
- this 바인딩
- 화살표 함수는 this를 정적으로 바인딩한다..
- 즉, 화살표 함수 내에서의 this는 해당 함수가 선언된 컨텍스트의 this 값을 그대로 사용한다..
- this가 예상치 못한 값으로 바뀌지 않기 때문에, 주로 리액트 컴포넌트 내에서 이벤트 핸들러로 자주 사용된다.
- 호이스팅
- 화살표 함수는 변수에 할당된 함수로 취급되므로 호이스팅되지 않는다.
- 즉, 정의된 이후에 호출할 수 있다.
- 주요 차이점
문법 function MyComponent() {...} const MyComponent = () => {...} this 바인딩 동적: 호출 시점에 결정 정적: 함수 정의 시점에 결정 호이스팅 호이스팅되므로, 코드 상단에서 호출 가능 호이스팅되지 않음; 함수 정의 후 호출 가능 용도 일반적인 함수 및 메서드 정의 주로 콜백 함수, 이벤트 핸들러 등에서 사용
- 리액트에서의 사용 예시
1. 함수 선언문 (Function Declaration)
클래스형 컴포넌트에서 메서드를 정의할 때 주로 사용된다.
class MyComponent extends React.Component { handleClick() { console.log('Clicked'); } render() { return <button onClick={this.handleClick}>Click me</button>; } }
2. 화살표 함수 (Arrow Function)
함수형 컴포넌트 및 이벤트 핸들러에서 사용된다.
this가 예상대로 바인딩되기 때문에
클래스형 컴포넌트에서 메서드를 화살표 함수로 정의할 때 유용하다.
class MyComponent extends React.Component { handleClick = () => { console.log('Clicked'); }; render() { return <button onClick={this.handleClick}>Click me</button>; } }
3. 결론
함수 선언문은 클래스한 함수 정의 방식으로,
this가 동적으로 바인딩되어 this의 변화가 중요한 경우 적합하다.
화살표 함수는 this 바인딩에 유리하여, 리액트 컴포넌트 내에서 자주 사용된다.
'Web > React' 카테고리의 다른 글
[React] 클래스형 컴포넌트 vs 함수형 컴포넌트 (0) 2024.12.04 [React] 바벨(Babel), 웹팩(Webpack), Vite, SWC (2) 2024.11.28 [React] npm, npx, yarn + 패키지 버전 읽는 법 (0) 2024.11.28 [React] React + DOM vs Virtual DOM (0) 2024.11.27 [React] JSX 문법, 리액트 엘리먼트, 리액트 컴포넌트 (0) 2023.01.10 - 함수 선언문 vs 화살표 함수