JavaScript

[javascript] 화살표 함수(Arrow Function)

조정밍 2021. 9. 24. 20:46

화살표 함수 표현은 전통적인 함수표현(function)의 간편한 대안이다.

 

사용할 수 없는 경우

  • this나 super에 대한 바인딩이 없고, methods로 사용될 수 없다.
  • new.target 키워드가 없다.
  • 일반적으로 스코프를 지정할 때 사용하는 call, apply, bind methods를 이용할 수 없다.
  • 생성자로 사용할 수 없다.
  • yield를 화살표 함수 내부에서 사용할 수 없다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Arrow_functions 에서 자세하게 확인 가능하다.

 

기본 사용 문법

//전통적인 함수표현
const func = function(arg1, arg2, ...argN) {
  return expression;
};

//화살표 함수 표현
const func = (arg1, arg2, ...argN) => expression

예시

//전통적인 함수표현
const sum = function(a, b) {
  return a + b;
}

//화살표 함수 표현
const sum = (a, b) => a + b;

화살표 함수 표현은 무명함수를 생성한 후 변수에 담는 방식이다.

function 키워드를 사용하여 함수를 만드는 것보다 간단하게 표현할 수 있다.

 

 매개변수가 하나 또는 없는 경우

// 매개변수가 하나뿐인 경우 괄호는 선택사항
(singleParam) => { statements }
singleParam => { statements }

// 매개변수가 없는 함수는 괄호만 사용 가능
() => { statements }

예시

// 매개변수가 하나뿐인 경우 괄호는 선택사항
const double = num => num * 2;

// 매개변수가 없는 함수는 괄호만 사용 가능
const print = () => console.log("print");

 

화살표 함수를 이용한 예제

items 배열중 짝수만 골라 4를 곱한다음 총 합을 구하는 로직이다.

화살표 함수를 사용하면 아래와 같이 간단히 작성할 수 있다.

const items = [1, 2, 3, 4, 5, 6];

const result = items
  .filter((num) => num % 2 === 0)
  .map((num) => num * 4)
  .reduce((a, b) => a + b, 0);