Web/JavaScript

[JavaScript] 화살표 함수(Arrow Function) 사용법 & 예제 총정리

코딩팩토리 2024. 6. 22. 01:48

ES2015에서 처음 등장한 화살표 함수(arrow function)는 기존 함수 표현식을 화살표로 간결하게 표현할 수 있는 새로운 문법으로 화살표 함수라는 이름은 문법의 생김새를 차용해 이름이 지어졌습니다. 

 

  • 화살표 함수는 짧고 간단하게 함수를 작성할 수 있게 해줍니다.
  • 화살표 함수는 this를 자신이 속한 환경에서 가져와서, this 키워드를 더이상 사용하지 않아도 됩니다.
  • 화살표 함수는 arguments 객체 대신 나머지 매개변수(...)를 사용합니다.
  • 화살표 함수는 new 키워드로 객체를 만들 수 없어서 객체 메서드로 사용할 때 주의하셔야 합니다.

 

 자바스크립트 화살표 함수(Arrow Function) 사용법 

기본 문법

(param1, param2, param3) => {
  // 함수 본문
}

기존의 문법과 다른점을 살펴보겠습니다. 기존에 자바스크립트에서는 함수를 선언할때는 function이라는 키워드로 시작을 했어야 했는데 화살표 함수는 function 키워드 대신 => 문법을 사용합니다. 그리고 그 뒷부분 매개변수 부분은 괄호( ) 안에 콤마 , 로 구분짓게 되는데 이 부분은 기존에 함수 매개변수 받는 부분이랑 같습니다.

 

See the Pen arrow function1 by 우정태 (@sxqouumz-the-reactor) on CodePen.

 

완전 기초적인 문법만 살려서 화살표 함수(arrow function)을 사용해봤습니다. 위와 같이 function이라는 키워드 대신에 변수에 괄호(매개변수) => { 본문 } 형태로 작성하면 됩니다. 위의 예제에서는 a,b,c 3개의 매개변수를 받아서 합계를 리턴해주고 있네요.

 


 

나머지 매개변수 ... 사용

(param1, param2, ...paramN) => {
  // 함수 본문
}

여기서 주목할점은 매개변수를 받는 부분의 ...paramN 입니다. ...은 여러 개의 매개변수를 나열할 수 있다는 것을 의미합니다. 즉 화살표 함수가 여러 개의 매개변수를 받을 수 있다는 것을 나타내기 위한 표기법입니다. 이 나머지 매개변수는 배열로 인식하게 됩니다.

 

See the Pen arrow function1 by 우정태 (@sxqouumz-the-reactor) on CodePen.

 

단순히 매개변수 값을 전달받아 출력을 하는 print() 메서드를 화살표 함수(arrow function)을 사용해서 만들어봤습니다. print() 메서드는 총 3개의 인자값을 받습니다.

  • a: 첫 번째 매개변수
  • b: 두 번째 매개변수
  • ...c: 나머지 모든 매개변수를 배열로 받는 나머지 매개변수

함수 본문에서는 document.write를 사용하여 각각의 매개변수를 HTML 문서에 출력합니다. 여기서 주목할 점은 ...c 나머지 매개변수입니다. a와 b는 출력과 동시에 <br>개행을 진행해주어 줄바꿈이 이루어졌는데 매개변수 c는 나머지 ["셋","넷","다섯"]의 배열로 인식되어 개행이 되지 않은 것을 보실 수 있습니다. 이 값을 더 잘사용하려면 함수 내부에서 가공 처리를 해줘야 할겁니다.

 


 

매개변수가 하나인 경우에는 괄호를 생략할 수 있음

param => {
  // 함수 본문
}

화살표 함수(arrow function)에는 매개변수가 하나만 있는 경우 괄호를 생략할 수 있도록 하고 있습니다. 아래 예제에서 잘 되나 한번 살펴보죠.

 

See the Pen arrow function3 by 우정태 (@sxqouumz-the-reactor) on CodePen.

 

보시는것처럼 매개변수가 하나 괄호가 없어도 잘 되죠? 이렇게 매개변수가 하나밖에 없으면 ( ) 괄호 생략이 가능합니다.

 


 

한 줄짜리 함수 본문은 중괄호와 return 키워드를 생략할 수 있음

(param1, param2) => param1 + param2

본문이 단일 표현식이라면 { }중괄호와 return까지 생략이 가능합니다. 이렇게 생긴 형태를 많이 보셨을겁니다. 이렇게 화살표 함수(arrow function)은 생략이 많이 진행될수록 점차 하나의 식처럼 보이기도 합니다.

 

See the Pen arrow function4 by 우정태 (@sxqouumz-the-reactor) on CodePen.

 

본문이 한줄짜리인 함수 두개를 생성해봤습니다. 하나는 a와 b 매개변수를 받아 더해서 반환하는 함수고, 하나는 매개변수 하나를 받아서 그대로 출력하는 함수입니다. 이렇게 Arrow 함수는 자바스크립트 코드를 더 간결하고 명확하게 만들어줍니다. 어떠한가요. 이해가 잘 되셨을까요?

 

※ 자바스크립트 화살표 함수 사용시 주의할점은 아래 글을 참고해 주세요.

[JavaScript] 화살표 함수(Arrow Function) 사용시 주의할 점 (어휘적 범위 - Lexical Scope)