Chapter1. 고차 함수
1.일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.
2.고차 함수(higher-order function)에 대해 설명할 수 있다.
3.고차 함수를 자바스크립트로 작성할 수 있다.
Chapter2. 내장 고차 함수
4.배열 내장 고차 함수 filter, map, reduce에 대해서 이해할 수 있다.
5.filter, map, reduce에 대한 이해를 기반으로 나머지 고차 함수를 스스로 학습할 수 있다. (forEach, find, sort, some, every)
6.고차 함수를 쓰는 이유를 설명할 수 있다.
7.고차 함수를 활용하여 프로그램을 작성할 수 있다.
Chapter3. 고차 함수의 중요성
8.추상화(abstraction)에 대해 설명할 수 있다.
9.추상화의 관점에서 고차 함수가 갖는 이점에 대해 설명할 수 있다.
10.고차 함수를 통해 사고 수준에서의 추상화를 달성할 수 있다.
1. 1.변수에 할당(assignment) 할 수 있다.
2.다른 함수의 전달인자(argument)로 전달될 수 있다.
3.다른 함수의 결과로서 리턴될 수 있다.
2. 일급 객체의 세가지 특징 중 두 가지인 다른 함수의 전달인자로 전달되거나 다른 함수의 결과로 리턴되는 함수를 고차함수라고 한다. 그렇기 때문에 모든 고차함수는 고차함수인 동시에 일급 객체다.
3. 가능하다. (코플릿 문제들을 다 고차함수로..)
4. filter는 (obj or arr).filter(함수)를 돌릴 경우 그 함수의 결과는 boolean으로
나와야 하며 객체 또는 배열의 키 또는 값을 처음부터 넣어주고 그 결과인
true or false에 따라 true인 결과값만 다시 선택해 반환하는 값이다.
map은 (obj or arr).map(함수)를 돌릴 경우 그 함수의 결과를 반환받습니다.
예를 들어 function(el){return el*2}를 할 경우 모든 값이 2배가 되는 식이다.
reduce는 (obj or arr).reduce(함수(acc,cur),초기값)으로 사용하고 초기값이
없는 경우 arr의 0번째 인덱스(첫번째 값) 부터 차례대로 들어가 작동한다.
5.@@@@ forEach, find, sort, some, every에 대해서는 추가 학습이 필요하다.
6. 고차함수를 사용해야지만 여러가지 작동을 압축해서 사용할 수 있다.
한번 사용할 때 마다 여러가지 작은 기능의 함수들을 각자 사용하기에는 너무 많은
함수이름 암기(변수명)와 시간이 소모된다.
7. 프로그램이라고 하기에는 거창하지만 웹페이지에 JavaScript를 사용할 때 고차함수를 사용할 수 있다면 사용할 수 있다고 할 수 있는 것이라고 생각한다.
8. 추상화란 우리가 정확하게 어떻게 동작하는지는 자세하게 알거나 설명할 수 없더라도 최종적인 기능을 이용할 수 있게 만드는 단순화 작업이라고 볼 수 있다.
우리는 밥솥이 어떤 기능으로 관리되는지는 모르지만 버튼 하나로 밥을 할 수 있고 로봇청소기가 집의 구조를 어떻게 파악하고 어떤 알고리즘으로 집을 효율적으로 청소하는지는 모르지만 시간예약으로 집을 다 청소하게 할 수 있는 것과 같다.
9. 고차함수는 여러가지 복잡한 기능들을 변수명 하나로 이해할 수 있게 압축할 수 있어서 여러가지 단일 기능들을 사용하는 것 보다 편리하며 적은 시간을 소모하고 혼동의 여지도 적다. 혼자만의 작업이 아닌 여러명이 사용하는 기능일 수록 잘 이름지어진 고차함수의 가치가 상승할 것 같다.
10. 고차함수를 통해 많은 자료들에서 특정 처리를 하는 것 등의 기능을 사용할 수 있으며 특정되지 않은 함수를 넣어서 작동하게 만드는 함수 또한 제작이 가능하다.
그리고 사실 하루종일 푼 코플릿 문제에서도 원하는 함수와 입력만 하기 때문에 추상화가 된 상태라고 볼 수 있다.
고차함수에 대한 공부 시간 제공이 너무 짧은 것 같다.
forEach, find, sort, some, every등 다른 함수?들도 주말에 복습해야겠다.
시간이 절대적으로 부족하다...
deep dive= 10p
운동 0분(자기전에 해야곘다..)
'회고' 카테고리의 다른 글
| [JavaScript] 객체 지향 프로그래밍-2 (0) | 2022.05.26 |
|---|---|
| [JavaScript] 객체 지향 프로그래밍 (0) | 2022.05.25 |
| 프론트엔드 부트캠프(코드스테이츠) 1개월차 회고 (0) | 2022.05.23 |
| 복습(유효성검사, 나만의 아고라스테이츠만들기) (0) | 2022.05.22 |
| 복습(Koans, DOM) (0) | 2022.05.21 |
