함수형 자바스크립트 프로그래밍

현재 리액트 + 타입스크립트 기반으로 한 어드민 웹사이트 개발을 맡게 되었는데, 주니어인 내가 전혀 건드려 보지 못한 것들을 하려니 조오금은 버거운 느낌을 자주 받고 있는다.

주로 학원에서 자바 기반으로 수업을 들으면서 자바 스크립트는 서브언어로 사용했었는데, 두가지 언어가 전혀 다른 언어라는 것을 알고 있음에도 불구하고 자바스크립트가 쉽다고 생각을 많이 했었다. 그러나 이번 기회에 자바스크립트라는 언어가 굉장히 난해하다고 많이 느꼈다.

함수형 자바스크립트 프로그래밍이라는 책을 책임 연구원분이 추천해주셔서 읽었는데, lodash.js 나 underscore.js는 아직 조금 더 공부가 필요하여 그 전에 1장에서 배우고 정리했던 것들에 대해 조금 정리하고자 한다.

1. 일급함수

자바스크립트는 일급객체이면서 일급함수이다.
여기서 일급이라는 것은 값을 다룰 수 있다는 뜻인데,
이것을 만족하기 위해서는

  • 변수에 담을 수 있고

  • 함수나 메서드에 인자로 넘길 수 있고

  • 함수나 메서드에 리턴할 수 있다.

    자바스크립트가 난해하다고 생각하는 점에 기여하는 것이 이러한 자바스크립트의 특징이다.

  • 아무때나 (런타임에서도) 선언이 가능하고

  • 익명으로 선언이 가능하고

  • 익명으로 선언한 함수나 메서드도 인자로 넘길 수 있다.

2. 클로저
자신이 생성될 때의 스코프에서 알 수 있었던 변수를 기억하는 함수라고 간단하게 표현 할 수 있다.
조금 더 정확하게 표현하자면,
클로저는 자신이 생성될 떄의 스코프에서 알 수 있었던 변수 중 언젠가 자신이 실행 될 때 사용할 변수들만 기억하여 유지하는 함수라고 말할 수 있다.

function f1() {
	var a =10;
	return function f2(b) {
		return a+b;
}

만약 이러한 코드가 있다고 생각하자.
함수 f1는 변수인 a를 가지고 있고 return 값으로 b를 매개변수를 가진 f2함수를 내보낸다. 이때 f2함수에서 retrun 할 때, 위에서 선언되었던 변수 a를 내보내는 것이다.
즉 f2 함수는 변수 a를 기억하고 있는 클로저 인 것이다.

클로저가 사용되어야 하는 상황

  • 이전 상황을 나중에 일어날 상황과 이어 나갈 때
  • 함수로 함수를 만들거나 부분 적용할 때

3. 고차함수
고차함수란 함수를 다르는 함수를 말한다.
사실 고차함수 안을 들어보면 다시 그것이 함수로 되어 있는데,
보기 편하기 위해서 이 함수를 만들어 쓰는 것 같아보인다.

고차함수란
1. 함수를 인자로 받아 대신 실행하는 함수
2. 함수를 리턴하는 함수
3. 함수를 인자로 받아서 또 다른 함수를 리턴하는 함수

ex) map, filter, reduce 등이 있다.
주로 써보는 결과 reduce 까지는 별로 쓸 일이 없는 것 같고
(아직 주니어라,,,) map 과 filter까지는 많이 써본 것 같다.

정리는 여기까지이다. 클로저에서도 bind,curry,partial등 정리할 것들이 많은데, 차차 알아가면서 정리를 해보도록 해야겠다.

배움은 늘 즐겁지만, 그것을 사용하는 것이 때론 고통이 된다는 점이
마치 프로그래밍과 씨름을 하고 있는 것 같은 느낌도 받는다.

그리고 프론트엔드가 굉장히 트렌드가 빨리 변한다고 했던 사람들의 말들도 깊이 와닿지는 않았었는데 react 에서 자주 사용하는 redux가 recoil로 대체 되는 등 이러한 빠른 변화들이 트렌드를 자주 읽고 변화에 빠르게 적응해야한다는 것에 대한 압박감이 있지만, 늘 새로운 것을 접하는 것은 즐겁다는 자세로 신문물들을 접해야겠다고 다짐했다.

좋은 웹페이지 즐겨찾기