DAY 17. 고차함수

고차함수

함수를 리턴하는 함수
함수를 인자로 받을 수 있는 함수

콜백함수

인자로 받아지는(들어가는,불러진) 함수

실행이 된 함수와 실행이 안된 함수의 차이

함수 자체와 함수의 결괏값
() 이걸로 함수가 실행되었는지 안되었는지 확인할 수 있다.

function foo () {
// 실행이 안 된 함수를 반환할 수 있다.
return function () {
return 'a';
}
} 

'a'를 얻으려면 foo()()하면 된다.
그냥 foo를 콘솔에 넣으면 실행안된 안에있는 함수 자체가 나온다

arr.filter

조건이 안맞으면 안나옴
전달받은 콜백함수에서 true만 모아서 새로운 array 리턴
filter 메소드의 사용법은 매개변수의 값이 항상 boolean이어야한다.

그러한 메소드들은 보통 배열을 0부터 끝까지 한번씩 훑음: 훑으면서 취하는 각각의 액션 특징이 있음 => 걸러야 되는 액션이 있어요. => 이 걸러야 되는 게 생각보다 까다롭다면? 문자열이나 숫자 배열 이런 걸로 걸러지지 않는다면?: 자유도를 높이기 위해서 콜백 함수를 사용하는 거.

콜백 함수는 아주 고맙게도 우리가 작성할 수 있어요. => 어떠한 내장 메서드를 쓸 때 조건을 우리가 직접 정할 수 있음.

arr.find

find() 메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환합니다

arr.reduce

누적

//acc = 0 , 1 - > 1 acc
//acc = 1 , 2 - > 3 acc
//acc = 3 , 3 -> 6 acc
//acc = 6 , 4 -> 10 acc
[1,2,3,4].reduce((acc,cur) => {
  //한번 순회할 때마다 acc를 업데이트해준다
  //그게 reduce의 궁극적인 목표이다.
  //결과값으로 출력해줄거니까
  
  //return acc+ cur;
  acc = acc + cur;
  return acc
},0) //초기값은 optional한 값이다.
//초기값을 사용하지 않으면 acc는 0번째 인덱스가 된다.
//acc가 결국엔 출력값이 된다
//10이 나옴
```

리듀스를 사용해서 배열 -> 문자열로 하고싶을 땐 초기값은 문자열로 두면 편함
배열 -> 숫자면 초기값을 숫자
배열 -> 객체면 초기값을 객체

acc 누적 -> 결국엔 반환값 -> 자료형을 결정해놓고 리듀스를 쓰면 된다.

map,filter는 보통 reduce로 풀 수 있다.

좋은 웹페이지 즐겨찾기