[5주차] [JavaScript] 고차 함수 - 4일차
고차 함수
- 오늘 공부한 내용
- 어려웠던 내용
- 궁금한 내용과 부족한 내용
- 느낀점
✨ 오늘 공부한 내용
고차 함수
함수를 리턴하는 함수, 함수를 전달인자로 받는 함수(=커링 함수)
이때 다른 함수의 전달인자로 전달되는 함수 : 콜백 함수(callback function)
- 콜백 함수를 전달받은 고차 함수는, 함수 내부에서 이 콜백 함수를 호출할 수 있다.
- 아예 호출하지 않을 수도 있고, 여러 번 실행할 수 있다.
📍 for…of vs for…in
- for…of : 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반복
for(let i =0; i<arr.length; i++){
}
위처럼 쓰지 않아도 아래 코드로 쓰면 대입받은 변수를 이용하면 루프 안에서 객체의 열거할 수 있는 프로퍼티에 순차적으로 접근할 수 있습니다.
for (variable of iterable) {
statement
}
- for…in : 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복
자세한 내용은 아래 링크를 눌러주세요! 출처 : YJUN IT BLOG:티스토리.
내장 고차 함수
filter
주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
map
배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다
reduce
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.
📍 리듀서 함수는 네 개의 인자를 가집니다.
- 누산기 (acc)
- 현재 값 (cur)
- 현재 인덱스 (idx)
- 원본 배열 (src)
리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 됩니다
✨ 어려웠던 내용
고차 함수 코플릿 몇 문제가 어려웠다.
✨ 부족한 내용
내장 고차 함수 대표 3가지인 filter, map, reduce를 자주 연습해야겠다. 하다보면 익숙해질 것이다.
✅ 4.
function calcuate(x, y, z){
const plus = function (num1, num2){
return num1 + num2;
}
return plus(x, y) * z
}
위 코드는 함수를 전달인자로 받지 않고 있고, 함수를 리턴하고 있지 않아서 고차함수가 아니다.
function calculate(x, y){
return function(){
return x * y;
}
}
위 코드처럼 함수를 전달인자로 받지 않아도 함수를 리턴하기 때문에 고차함수이다.
✅ 8.
const summary = function (acc, cur) {
return acc + cur + ' ';
};
const contents = ['미들웨어를 통해 강력한 API를 작성할 수 있다.', 'HTTP 유틸리티 메소드를 제공한다.', 'NestJs는 Express 기반이다.', 'Express는 OpenJS 기반의 프로젝트이다.'];
let output = contents.reduce(summary);
console.log(output);
지금 reduce 메서드를 통해 함수를 접근하고 있는데, 두 번째 전달인자에 초기값이 주어지지 않아 배열 contents의 첫 번째 요쇼인 ‘미들웨어를 통해 강력한 API를 작성할 수 있다.’ 가 리턴된다.