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

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

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이야기
    이프로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • Programming (111)
        • C# WPF (11)
        • Java Spring (16)
        • JavaScript & TypeScript (5)
        • Git (9)
        • Database (5)
        • Etc (42)
      • 생활상식 (24)
      • 리뷰 (8)
      • 주식 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

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

    • 최근 글

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

    티스토리툴바