오늘 배운 것
- 자바스크립트 일급 객체와 고차 함수
- 내장 고차 함수 (배열 메서드 : filter, map, reduce 학습) + 코플릿 문제풀이
- 고차함수의 중요성 : 추상화
- 클로저와 커링의 차이? 초간단 정리
새롭게 알게 된 것
일급 객체란?
- 다른 객체들에게 적용 가능한 연산을 모두 지원하는 객체이다.
아래의 세가지 특징을 가지면 일급 객체라고 할 수 있다.
1. 변수에 할당할 수 있다.
2. 다른 함수의 전달인자로 전달될 수 있다.
3. 다른 함수의 결과로서 리턴될 수 있다.
- 자바스크립트에서 함수(함수도 객체이다)는 위 세 가지 모두를 충족하기 때문에 일급 객체, 일급 함수라고 할 수 있는 것이다.
- 또 다른 의미로는 자바스크립트에서는 함수가 값 처럼 다루어진다는 의미이기도 하다. (변수에 할당할 수 있음.)
고차 함수란?
- 다른 함수를 인자로써 전달받는 함수를 의미한다.
- 이 때 전달이 되는 함수는 콜백함수이다.
- 다른 함수를 결과로써 리턴하는 함수
- 이런 함수를 커링 함수라고 부른다.
고차 함수가 왜 중요할까요.
- 시야가 트이고 생산성이 증가하기 때문에 그렇습니다.
- 추상화라는 것은 복잡한 자료, 모듈, 시스템으로 부터 핵심적인 개념 즉 에센셜을 추출해 내는 것으로 이해할 수 있다.
- 정확한 내부 동작을 몰라도 이해하고 사용할 수 있기 때문에, 문제를 더 쉽고 빠르게 해결할 수 있다는 장점이 있다.
- 추상화의 관점에서 바라보면, 함수도 사고 혹은 논리의 모음이다. 자주 사용하는 기능들을 모아서 함수를 하나의 모듈처럼 만들어서 계속 재사용하니깐 말이다. 복잡한 모든 로직을 일일이 다 짜지 않아도 미리 만들어두면 가져다 쓸 수 있으니깐.
- 추상화를 단순히 값을 전달하는 수준에서 벗어나서, 함수 차원으로 넓어지면 더 고차원에서 생각할 수 있고 그렇기에 시야가 트이고 생산성이 증가한다고 할 수 있다.
reduce 함수로 중첩 배열 평탄화
let arr = [
[1, 2, 3],
[undefined, null, true],
['11', '!!@@'],
];
let newArr = arr.reduce((acc, cur) => {
return acc.concat(cur);
});
console.log(newArr);
//[ 1, 2, 3, undefined, null, true, '11', '!!@@' ]
SUMMARY
잘 한 점
- 오늘 아침까지 이번주 알고리즘 문제 모두 푼 것. 안풀려도 매달려서 푼 것!
- 발표 자료 준비한 것, 보고 부족한 부분 조금 더 보강하려고 한 것.
보완할 점
- 이해가 안되는 부분 끈덕지게 잡고 늘어지지 않은 점. 대강 이해하려고 한다.
느낀 점
- 오늘은 드디어 섹션 2 첫 날, 고차 함수에 대해서 다루는 날이었다. 각종 배열 메서드는 알고리즘 문제를 풀면서 많이 익숙해져서 나쁘지 않았다. 이전까지 reduce 개념에 대해서 완벽하게 이해를 못하기도 했었는데, 오늘 유닛을 통해서 조금 더 친해진 것 같다. 특히 flat 메서드를 사용해서 평탄화하지 않고 reduce에 concat을 이용한 방식이 엄청 인상적이었다. 아까 디스코드에 동기분이 남겨주신 글을 보니, flat 메서드는 최적화가 되지 않은 반면, concat은 최적화가 되어있기 때문에 속도가 더 빠르다고 한다. 잘 써먹어야지!
- 아마 이따 리액트 강의를 듣고 추가적인 부분을 보강해서 쓸 것 같다. 화이팅!
'TIL' 카테고리의 다른 글
[Day 23] 2022-0725 : 쉬운 듯 어려웠던 ES6 클래스 문법 + props (0) | 2022.07.25 |
---|---|
[Day 22] 2022-0722 : 객체지향과 프로토타입 블로깅 데이 (0) | 2022.07.22 |
[Day 20] 2022-0720 : 섹션 1 마무리✨ (0) | 2022.07.20 |
[Day 19] 2022-0719 : solo 프로젝트 마무리 (0) | 2022.07.19 |
[Day 18] 2022-0718 : solo 프로젝트 -1 (0) | 2022.07.18 |