부트캠프 24일차를 통해서 JS/Node
에서 고차함수
대해서 공부를 했다. 고차함수
라고 해서 처음 겪는 보는 것들인 줄 알았는데, 고차함수인지 모르고 쓰는 것과 새로운 것들도 있었다. 그래도 이들을 사용해서 우리가 편리하게 사용할 수도 있고 잘 알면 중요하다고도 하니 배웠던 개념 정리와 함께 느낀점들을 작성해보겠다.
일급 객체는 특별한 대우를 받는 객체를 말하며, 그 중 하나가 함수이다.
javascript
에서는 함수를 아래와 같이 취급한다.
함수 표현식은 선언식과 다르게 호이스팅이 적용되지 않는다. 호이스팅을 지나치게 의존하면, 코드의 유지보수가 어려워질 수 있기 때문에 표현식을 쓸 때가 있다.
filter
, map
, reduce
를 다뤘지만 이 외에도 forEach
, find
, sort
, some
, every
같은 내장 고차함수들이 있다.모든 배열의 요소들 중에서 특정 조건을 만족하는 요소를 걸러내는 메소드다.
걸러내는 기준이 되는 특정조건은 함수의 형태이며, filter 메소드의 인자다.
걸러내기 위한 조건을 명시한 함수를 인자로 받기 때문에 고차함수이다.
배열의 각 요소가, 특정논리(함수)에 따라 사실(boolean)일 때, 따로 분류한다.(filter)
arr_protoType.filter(function(e) { 조건식(true or false) }) or arr_protoType.filter(e => 조건식) // 리턴의 경우만 있다면
arr_protoType.map(function(e) { 가공 return e; }) or arr_protoType.map(e => 가공식) // 리턴의 경우만 있다면
arr_protoType.reduce(function(acc, cur) { acc = ~~~~ return acc; }, 0) or arr_protoType.reduce((acc, cur) => ???) // 리턴의 경우만 있다면
github 실습 자바스크립트 파일
실습은 페어 프로그래밍으로 진행됐으며, 문제에 대해 파악하고 풀어보는 시간을 가졌다. 뭔가 이것저것 섞어가면서 하려니 머리가 터질것 같았지만 그래도 해낼 수가 있었다. filter와 map은 그래도 사용할만 해진 것 같지만, 아직 reduce에 대한 이해가 더 필요해 보인다.
이번 유닛에서는 고차함수에 대한 개념들을 숙지하고 실습 위주로 사용법을 익히는 것이 목표같았다. 실습에서 느꼈던 것과 같이 filter와 map은 사용법이 어느정도 잘 숙지가 됐지만, reduce는 알다가도 모를 것이 초기화값과 누산이 되는 것이 잘 이해가 되지 않았던 것 같다. 이번에는 reduce에 대해서 조금 더 알아봐야 할 것 같다. 그래도 간만에 생각을 깊게 해볼만한 문제들이 있어서 좋았던 것 같다. 하루하루 발전해 나가자!