- 변수에 할당할 수 있다.
- 다른 함수의 인자로 전달될 수 있다.
- 다른 함수의 반환값이 될 수 있다.
함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수이다. 여기서 다른 함수(caller)의 인자로 전달되는 함수를 콜백 함수(callback function)이라고 부른다.
Yes ! 😏
map 함수를 사용해보자.let arr = [2, 4, 6, 8]; arr.map(function(el) { return el + 5; });
이는 이렇게 줄여서 쓸 수 있다.
arr.map(el => el + 5);
arr.filter(특정 조건)
모든 배열 요소 중 특정 조건(함수)을 만족하는 요소만 걸러준다. 여기서 특정 조건을 명시하는 함수는 boolean으로 리턴된다.배열 요소 중 짝수만 걸러보자.
arr.filter(el => el % 2 === 0);
▶
forEach
: 배열의 각 요소가 특정 논리에 의해 다른 요소로 지정된다.
map 함수와 비슷하다. 하지만 map 함수와 달리 forEach 함수에는 리턴 값이 없다. 따라서 함수를 사용할 때 꼭 지정된 요소를 담을 변수를 설정해주어야 한다.arr.forEach((el, i) => arr2[i] = el * 3);
▶
find
: 배열의 요소를 찾을 때 사용한다. 리턴 값은 해당 요소가 존재할 때 요소의 값, 아닐 때 undefined 이다.arr.find(el => el === 2);
▶
map
: 배열의 각 요소가 특정 논리에 의해 다른 요소로 지정된다. 위의 forEach와 다르게 새로 생성된 배열을 리턴한다.let arr2 = []; arr2 = arr.map(el => el * 5); arr.map((el, i) => arr2[i] = el * 5);
▶
reduce
: 배열의 각 요소를 특정 함수에 따라 하나의 형태로 응축(reduction)한다.
(➡ 초기값(누적값) + 현재값 = 누적값) 마지막 누적값이 리턴값이다.
누적값은 acc(accumulator), 현재값은 cur(current)로 많이 쓰인다.arr.reduce((a, b) => a + b, 0); arr.reduce((a, b) => a + b, '');
여기서 마지막에 넣어주는 값이 초기값이다. 이는 리턴 값의 형식을 결정해준다.(0, '', [], {})
▶
sort
: 배열의 요소를 사전식으로 정렬해준다.arr.sort(); arr.sort((a, b) => a - b); // 오름차순 정렬 arr.sort((a, b) => b - a); // 내림차순 정렬
▶
some
: 배열의 요소 중 특정 논리에 참인 요소가 하나라도 있는지 알려준다. 리턴 값은 boolean 이다.let arr = [1, 2, 3, 5, 7, 9]; arr.some(el => el % 2 === 0); // true
▶
every
: 배열의 모든 요소가 특정 논리에 참인지 알려준다. some과 마찬가지로 boolean을 리턴한다.let arr = [1, 2, 3, 5, 7, 9]; arr.some(el => el % 2 === 1); // false
추상화란 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것이다.
추상화는 핵심을 추출하기 때문에 생산성을 향상시킨다. 일반 함수는 값(value)를 처리하기 때문에 값 수준의 추상화가 가능하다면, 고차 함수는 함수(function), 즉 사고의 묶음을 처리하기 때문에 사고 수준의 추상화가 가능해진다.
Yes ! 🙄
고차함수를 배운 이상 알고리즘 천재가 될 수 밖에 없겠다. 으하하 !