Javascript 화살표 함수
2020년 6월 30일 수정
≡ 목차 (Table of Contents)
Javascript에서는 축약된 동적 함수 혹은 클로저 형태로 쓸 수 있는 화살표 함수(Arrow Function) 문법을 제공한다. 이 글에서는 이 화살표 함수가 무엇인지 간단히 정리한다.
화살표 함수
화살표 함수 표현법은 =>
오퍼레이터를 사용하기 때문에 이런 이름이 붙은 것 같다. 문법은 생략하고 일단 예제를 보자.
let add = (a, b) => { return a + b }
위 코드는 아래와 동일하다고 볼 수 있다.
let add = function(a, b) { return a + b }
참고로 위의 두 코드는 아래와 같이 더 단순하게 구현할 수도 있다.
let add = (a, b) => a + b
즉 단순한 식(expression)만 있을 경우 return
과 중괄호를 생략할 수 있다.
당연하게도 function
을 이용해 클로저를 구현하던 것을 화살표 함수로 그대로 대체할 수 있다.
setTimeout(() => { console.log('after a second...') }, 1000)
확실히 코드가 더 단축되기는 하는데 읽기가 좋은지는 잘 모르겠다.
식(expression) 표현법의 확장
위에서 언급했던 예를 다시 보자.
(a, b) => a + b
위 코드는 아래처럼 표현할 수도 있다.
(a, b) => (a + b)
괄호로 감싼 것이 뭔가 특별한가 생각할 수도 있는데, 좀 더 복잡한 식을 표현하기 위해 괄호를 사용하는 것과 사실 별 차이는 없다. 다만 차이가 있다면 아래와 같이 표현할 수도 있다는 점이 있다.
(a, b) => ( a + b )
이렇게 줄바꿈을 해서 여러 줄의 식을 구현할 경우 유용한 방식이다.
만약 오브젝트를 리턴해야 한다면 어떻게 해야할까?
(v1, v2) => { foo: v1, bar: v2, }
불행히도 이 코드는 틀렸다. 당연하게도 중괄호는 함수 본체를 구현할 때 사용하는 문법으로 해석된다.
그런데 이런 단순한 식으로 오브젝트(Object)를 리턴하는 경우에 괄호를 이용할 수 있다.
(v1, v2) => ({ foo: v1, bar: v2, })
중괄호를 괄호로 감싸면 아주 간단하게 오브젝트를 리턴하는 화살표 함수를 구현할 수 있다.