화살표 함수(Arrow Function) 사용법 및 주의할 점

2024. 7. 11. 19:02·Programming/JavaScript & TypeScript
반응형

JavaScript의 화살표 함수(Arrow Function)는 ES6에서 도입된 간결하고 편리한 함수 정의 방식입니다. 화살표 함수는 기존의 함수 표현식보다 문법이 간단하고, this 바인딩이 정적으로 결정되는 등 여러 장점을 가지고 있습니다. 이번 글에서는 화살표 함수의 사용법과 주의할 점에 대해 알아보겠습니다.

1. 화살표 함수 기본 사용법

화살표 함수는 function 키워드 대신 => 기호를 사용하여 함수를 정의합니다. 다음은 기본적인 화살표 함수의 문법입니다.

// 기본 함수 표현식
const add = function(a, b) {
  return a + b;
};

// 화살표 함수 표현식
const add = (a, b) => {
  return a + b;
};

// 더 간단한 표현 (중괄호와 return 생략)
const add = (a, b) => a + b;

설명

  • 화살표 함수에서는 중괄호({})와 return 키워드를 생략할 수 있습니다. 단, 생략하려면 함수 본문이 단일 표현식이어야 합니다.
  • 매개변수가 하나인 경우 괄호(())를 생략할 수 있습니다.
// 매개변수가 하나인 경우 괄호 생략 가능
const square = x => x * x;

2. 매개변수가 없는 화살표 함수

매개변수가 없는 화살표 함수는 빈 괄호(())를 사용하여 정의합니다.

const greet = () => 'Hello, World!';
console.log(greet()); // 'Hello, World!'

3. 객체 반환하기

객체를 반환할 때는 객체 리터럴을 괄호로 감싸야 합니다. 그렇지 않으면 함수 본문의 중괄호로 인식됩니다.

const getUser = () => ({ name: 'John', age: 30 });
console.log(getUser()); // { name: 'John', age: 30 }

4. 화살표 함수의 this 바인딩

화살표 함수는 자신만의 this를 가지지 않고, 주변 lexical context의 this를 상속받습니다. 이를 통해 일반 함수에서 자주 겪는 this 바인딩 문제를 해결할 수 있습니다.

function Person() {
  this.age = 0;

  setInterval(() => {
    this.age++; // this는 Person 객체를 가리킴
    console.log(this.age);
  }, 1000);
}

const person = new Person();

설명

  • setInterval 내의 화살표 함수는 Person 객체의 this를 상속받아, this.age가 올바르게 증가합니다.

5. 주의할 점

1. 메서드로 사용하지 않기: 화살표 함수는 메서드로 사용하기에 적합하지 않습니다. 메서드는 객체의 this 컨텍스트를 사용해야 하는데, 화살표 함수는 this를 상속받기 때문입니다.

const obj = {
  value: 10,
  // 화살표 함수는 메서드로 사용하지 않는 것이 좋습니다.
  increment: () => this.value++
};

obj.increment();
console.log(obj.value); // undefined (this가 상속되지 않음)

2. 생성자로 사용하지 않기

화살표 함수는 생성자로 사용할 수 없습니다. new 키워드와 함께 사용하려고 하면 오류가 발생합니다.

const MyFunction = () => {};
const instance = new MyFunction(); // 오류 발생: MyFunction is not a constructor

3. arguments 객체 사용 불가

화살표 함수는 자체 arguments 객체를 가지지 않습니다. 대신, 필요하다면 나머지 매개변수(Rest Parameter)를 사용할 수 있습니다.

const func = (...args) => {
  console.log(args);
};

func(1, 2, 3); // [1, 2, 3]

 

728x90
저작자표시 (새창열림)

'Programming > JavaScript & TypeScript' 카테고리의 다른 글

JavaScript 스프레드 연산자 사용법  (0) 2024.07.10
타입스크립트란?  (1) 2023.04.20
웹소켓과 타입스크립트 예제 코드  (0) 2023.04.19
[jQuery] 라디오버튼, 콤보박스에서 자주쓰는 jQuery  (0) 2019.11.22
'Programming/JavaScript & TypeScript' 카테고리의 다른 글
  • JavaScript 스프레드 연산자 사용법
  • 타입스크립트란?
  • 웹소켓과 타입스크립트 예제 코드
  • [jQuery] 라디오버튼, 콤보박스에서 자주쓰는 jQuery
이프로그
이프로그
리뷰, 개발, 일상을 기록하는 블로그
    반응형
  • 이프로그
    이프로그의 IT이야기
    이프로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Programming (111)
        • C# WPF (11)
        • Java Spring (16)
        • JavaScript & TypeScript (5)
        • Git (9)
        • Database (5)
        • Etc (42)
      • 생활상식 (24)
      • 리뷰 (8)
      • 주식 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      docker
      주식투자
      클라우드 컴퓨팅
      ES6
      C# WPF
      XAML
      소프트웨어 개발
      Kubernetes
      rest api
      웹 개발
      투자전략
      자바스크립트 트릭
      DevOps
      Java
      데이터베이스 성능
      협업 도구
      서버 관리
      javascript
      WPF
      dynamicresource
      클라우드 네이티브
      재테크
      이슈 트래킹
      마이크로서비스
      투자
      분산 메시징 시스템
      데이터 바인딩
      java8
      Apache Kafka
      데이터 파이프라인
    • 최근 댓글

    • 최근 글

    • 250x250
    이프로그
    화살표 함수(Arrow Function) 사용법 및 주의할 점
    상단으로

    티스토리툴바