본문 바로가기
Language/JavaScript

[JS] 화살표함수

by 오우영 2021. 2. 24.

ES6에서 새로 도입한 화살표 함수(arrow function)와 일반 함수를 비교해보면 보통 함수 표현식을 축약한 형태로 표시됩니다.

 

함수 표현식

const add = function (x, y) {

  return x + y

}

 

화살표 함수

const add = (x, y) => {

  return x + y

}

 

화살표 함수는 function 키워드를 화살표로 축약해서 표시할 수 있습니다. 함수의 본문에 return 문만 있는 경우, 화살표 함수는 return 을 생략할 수 있습니다. 이 때 주의해야할 점은 {} 중괄호 (curly brace) 는 사용하면 안됩니다.

 

() 소괄호 (parentheses) 를 사용하는 것은 가능합니다. 이는 일반적인 수식에서의 "괄호 치기" 와 동일합니다.

const add = (x, y) => x + y

const add = (x, y) => (x + y) // O, 정상 작동

const add = (x, y) => { x + y } // X, undefined 리턴

만일 함수 내의 표현식이 두 줄 이상일 경우에는, return을 생략하기 보다는 중괄호와 return을 명시적으로 쓰는 것이 좋습니다.

 

화살표 함수는 클로저를 표현할 때 더 유용합니다.

 

 

함수 표현식

const adder = function(x) {

  return function(y) {

      return x + y

    }

  }

adder(5)(7) // 12

 

화살표 함수

 

function 키워드만 없애본다면 아래와 같습니다.

const adder = (x) => {

  return (y) => {

    return x + y

  }

}

 

위의 식의 return을 생략하면 아래와 같습니다.

const adder = x => y => x + y

이처럼 클로저는 연속된 여러 개의 화살표로 표시할 수 있습니다.

 

 

클로저를 연속된 여러개의 화살표 함수로 표현한 다른 예제입니다.

const htmlMaker = tag => textContent => `<${tag}>${textContent}</${tag}>`

 

htmlMaker('div')('code states')

//'<div>code states</div>'

 

const liMaker = htmlMaker('li')

 

liMaker('1st item')

//'<li>1st item</li>'

liMaker('2nd item')

//'<li>2nd item</li>'

'Language > JavaScript' 카테고리의 다른 글

[JS] OOP  (0) 2021.02.26
[JS] 구조 분해  (0) 2021.02.25
[JS] 고차함수  (0) 2021.02.24
[JS] 기초  (0) 2021.01.25
[JS] Method  (0) 2021.01.19

댓글