티스토리 뷰
함수는 일급 객체 중 하나
일급 객체(first-class object)의 특징
- 변수에 할당 가능(-> 배열의 요소나 객체의 속성값으로 저장 가능)
- 함수에 전달인자로 사용 가능
- 함수의 결과로 리턴 가능
고차 함수(higher order function)
: 함수를 전달인자로 받거나, 함수를 리턴하는 함수
전달인자로 받은 함수를 콜백 함수(callback function)라고 함(콜백 함수를 받은 고차함수는 caller)
고차 함수를 사용하는 이유는 "추상화(abstraction)"
: 복잡한 자료를 압축해서 핵심만 추출한 상태로 만드는 것(=생산성 향상)
함수 자체도 추상화임
- 사고/논리의 묶음. 값 수준의 추상화(단순히 값을 전달 받아 처리하는 수준)
고차 함수
- 사고의 추상화(함수를 전달받아 처리하는 수준)
메서드를 사용하는 이유: 추상화를 통한 효율 증대
내장 고차 함수(함수를 전달인자로 전달)
arr.filter(func)
: 배열의 요소 중 특정 조건(콜백 함수)을 만족하는 요소를 '새 배열'로 리턴
arr.find(func)
: 함수에 만족하는 첫번째 요소의 '값'을 리턴
arr.some(func)
: 배열의 요소 중 하나라도 콜백 함수 조건에 해당하면 T 반환, 전부 F일 경우 F반환
arr.every(func)
: 배열의 요소 모두가 콜백 함수 조건에 해당하면 T 반환, 아니면 F 반환
arr.map(func)
: 배열 요소에 값을 바꾸는 함수를 실행하고 바뀐 값을 '새 배열'에 담아 리턴(forEach는 리턴이 없음 undefined)
콜백 함수의 전달인자로 idx도 받을 수 있음
arr.reduce(func[, acc])
: 배열의 각 요소를 원하는 하나의 값으로 응축하는 함수 실행. 누적 결과 '값'을 리턴
초기값을 지정하지 않으면 배열의 0번째 요소가 초기값이 됨. (콜백 함수의 리턴이 다음 차례의 acc값이 됨)
콜백 함수의 전달인자로 acc, cur[, idx, src]를 받음
arr.sort(func) <- mutable
: 원배열이 유니코드 순서로 정렬. 콜백 함수는 정렬 순서를 결정
고차 함수 ⊃ 커링
고차 함수: 전달인자로 함수를 받거나, 함수를 리턴하는 함수
커링: 단일 매개변수를 갖는 중첩 함수이면서 함수를 리턴하는 함수
클로저: 외부 함수의 변수를 사용하면서 함수를 리턴하는 함수
절차형(imperative) 프로그래밍은 '어떻게'에 집중. 코드를 구체적으로 구현
선언형(declartive) 프로그래밍은 '무엇을'에 집중. 메소드를 사용하여 구현 목적에 초점
22.11.17
코스 S2U1
'코드스테이츠(SEB_FE_42)' 카테고리의 다른 글
| [JS] 프로토타입 Object Prototypes (0) | 2022.11.18 |
|---|---|
| [JS] 객체 지향 프로그래밍 (OOP, Object-oriented programming) (0) | 2022.11.18 |
| 코드스테이츠 Section 1 KPT회고 (0) | 2022.11.16 |
| 기술 면접 준비, 회고 블로그를 작성하는 이유 (0) | 2022.11.16 |
| [CSS] 미디어 쿼리(@media), 다크모드(prefer-color-scheme), 스크롤바(::WEBKIT-SCROLLBAR) (0) | 2022.11.15 |

