-
21일차~(고차함수)코드스테이츠 2022. 11. 17. 21:54
오늘은 새로운 세션의 시작과 함께 수업이 바쁘게 돌아갔다. 전보다 시간이 빡빡하게 돌아갔다. 문제푸는시간도 촉박했고 이론을 읽어보는 시간도 부족했다. 점심시간도 좀 쪼개서 문제도 풀고 이론도 봤더니 얼추 시간이 맞게 끝났다. 페어활동으로 코풀릿 문제 풀기가 있었는데 딱 실시간 세션 전에 다 풀수 있어서 다행이었다. 실시간 세션에서는 이론들을 한번에 정리해주셨고 어려워하는 문제들 위주로 해설을 해주셨다. 스터디원들도 어제 회고 이후로 조금더 편해진 것 같다. 오늘 하루도 굉장히 빨랐던것 같다. 내일도 시간 좀 빡세던데.... 내일만 하면 주말이니 내일도 화이팅 하고 이번 주말은 조금 편히 지내야할 것 같다. 물론 복습 몇 시간은 무조건이지!
1. 일급 객체(first-class citizen)
- 변수의 값으로 사용이 가능하다. (변수에 할당이 가능하다.)
- 함수의 전달인자로 전달이 가능하다.
- 다른 함수의 리턴 값이 될 수 있다.(다른 함수의 결과로서 리턴 가능)
=> 원시자료 데이터처럼 사용이 가능하다.
- 함수 또한 일급 객체이다!
2. 고차함수(higher order function)
- 함수를 전달인자로 전달하는 함수 = 콜백함수(callback function)라고 한다.
- 함수를 리턴하는 함수 = 커링함수 라고도 한다.
// 함수를 전달인자로 전달받은 함수 (callback function를 전달인자로 전달받은 함수) function a(func, num) { return func(num); } // 함수를 반환하는 함수 function a(num1) { return function b(num2) { return num1 + num2; } }
3. 내장되어 있는 고차함수
1) filter
- 배열의 요소 중 특정 조건에 만족하는 요소만을 반환한다. (조건에 true일 경우에만)
- 원하는 요소를 골라낼때 쓰인다.
- 반환된 배열의 길이는 원래 배열의 길이보다 같거나 짧다.
let arr = [1, 2, 3, 4, 5]; arr.filter(function(el) { return el % 2 === 1; // 홀수일 경우에만 true } // 조건에 true인 홀수값 [1, 3, 5]를 가진 새로운 배열을 만듦.
2) map
- 배열의 모든 요소가 함수의 영향을 받아 변형된 형태로 반환.
- 모든 요소에 함수를 적용시킬때 쓰인다.
- 반환된 배열의 길이는 원래의 배열의 길이와 같다.
let arr = [1, 2, 3, 4, 5]; arr.map(function(el) { return el * 2; } // 모든 배열의 값에 곱하기 2를 해준 새로운 배열이 반환된다. // [2, 4, 6, 8, 10]
3) reduce
- 배열의 모든 요소가 함수의 영향을 받는데 함수가 반복될 때 반환 값이 acc에 할당되며 최종 반환 값이 반환된다.
- 모든 요소를 어떤 조건에 의해 응축시킬 때 쓰인다.
- 초기값을 설정해줄 수 있다.
- 반환된 배열의 길이는 원래의 배열의 길이보다 작거나 같다.
let arr = [1, 2, 3, 4, 5] arr.reduce(function(acc, cur) { return acc + cur; }, 0) // 모든 요소의 합이 반환된다. // 0이 초기값 // 15 // 초기값이 10일 경우 let arr = [1, 2, 3, 4, 5] arr.reduce(function(acc, cur) { return acc + cur; }, 10) // 초기값과 모든 요소의 합이 반환된다. // 10이 초기값 // 25
'코드스테이츠' 카테고리의 다른 글
25일 차~ (1) 2022.11.23 24일차~(비동기) (0) 2022.11.22 20일차! (기술 면접 연습과 section1 회고) (0) 2022.11.16 19일차! (나만의 아고라 스테이츠 만들기 중 페이지네이션) (0) 2022.11.15 17일차!! (로그인 페이지 꾸미기) (0) 2022.11.11