o
자바스크립트에서 함수는 특별한 대우를 받는데,
함수를 변수에 할당할 수 있고, 다른 함수의 전달인자로 전달할 수 있으며, 디른 함수의 값으로 반환될 수 있다.
고차 함수(higher-order function)에 대해 설명할 수 있다.
o
고차 함수는 함수를 전달인자로 받을 수 있고, 함수를 리턴할 수 있다. 이때, 다른 함수의 전달인자로 전달되는 함수를 콜백함수라고 하고, 함수를 리턴하는 함수를 커링함수라고 한다.
이 둘은 고차 함수에 포함된 개념이라고 할 수 있다.
고차 함수를 자바스크립트로 작성할 수 있다.
o
function adder(added){
return function(num){
return num + added;
};
}
>
let output = adder(5)(3);
console.log(output); // 8
배열 내장 고차 함수 filter에 대해서 이해할 수 있다.
o
배열의 각 요소가 특정 조건에 따라 사실이면, 따로 분류되어 반환한다.
```
let arr = [1,2,3,4,5];
arr.filter(el % 2 === 0) // [2,4]
arr.filter(el % 2 === 1) // [1,3,5]
filter에 대한 이해를 기반으로, 나머지 내장 고차 함수를 학습할 수 있다.
o
배열 내장 고차 함수 filter, map, reduce에 대해서 이해할 수 있다.
o
map 메서드는 배열의 각 요소가 특정 조건에 의해 다른 요소로 지정된다.
reduce 메서드는 배열의 각 요소를 특정 조건에 따라 원하는 하나의 형태로 응축한다.
filter, map, reduce에 대한 이해를 기반으로 나머지 고차 함수를 스스로 학습할 수 있다.
o
forEach 메서드는 콜백함수를 배열에 있는 각 요소에 대해 오름차순으로 한 번씩 실행한다.
find 메서드는 콜백함수의 반환값이 true인 첫 번째 요소를 리턴
findIndex 메서드는 콜백함수의 반환값이 true인 첫 번째 요소의 인덱스를 리턴
some 메서드는 콜백함수의 반환값이 단 한 번이라도 true이면, true 리턴하고, 모두 거짓이면, false 리턴
every 메서드는 콜백함수의 반환값이 모두 참이면, true 리턴하고,
하나라도 거짓이면, false 리턴sort 메서드는 배열의 순서를 바꾸며 요소들을 정렬한다.
고차 함수를 쓰는 이유를 설명할 수 있다.
o
복잡한 사고 과정을 함수 안에 내포할 수 있다.
복잡한 사고 처리 과정이 내포된 함수를 통해 쉽게 처리할 수 있어
생산성이 향상된다.
고차 함수를 활용하여 프로그램을 작성할 수 있다.
△
추상화에 대해 설명할 수 있다.
o
(위에서 설명함)
추상화의 관점에서 고차 함수가 갖는 이점에 대해 설명할 수 있다.
o
고차함수는 함수를 전달받거나 함수를 리턴하는 함수로서 복잡한 로직을 내포하고 있다. 이 복잡한 사고 처리 과정(로직)을 고차함수라는 수단을 통해 쉽게 처리할 수 있다.
고차 함수를 통해 사고 수준에서의 추상화를 달성할 수 있다.
o
MapReduce 학습하기 (MapReduce Model)
자바스크립트에서 커링(currying)과 클로저(closure)의 차이 이해하기 (js closure vs curry)
선언형 프로그래밍(declarative programming)과 절차형 프로그래밍(imperative programming)의 차이를 배열 메서드를 통해 이해하기 (js imperative vs declarative)
함수의 조합(function composition)에 대해 학습하기 (javascript function composition)
🔡➡️💻➡️🤓👍
정규시간에 학습 내용을 다 학습하지 못했다.
오전에 학습 내용을 다 마치지 못한 상태에서
페어 활동으로 코플릿을 풀려고 하니 어려웠다.
늘 페어 활동 이전의 오전 학습 시간이 부족하다고 느낀다.
페어 활동에서 문제를 적용하여 풀 시간보다
페어가 푸는 과정을 지켜만 보고 있다.
보는 것도 이해가 되면 시간이라도 아깝지 않지..
뭔가 페어 활동은 항상 아쉬움이 크다.
부트캠프 프로그램도 좋지만,
초보자에게는 마냥 좋다고 할 수 있을지는 모르겠다.
어느정도 베이스가 있는 사람에게는
이 프로그램이 너무나도 탄탄할지는 모르겠으나
노베이스인 내게는 개념을 숙지하기도 전에 코드를 적용해야하니 정규 수업을 따라가는 것조차 버겁다.
이게 자기주도학습이라고 할 수 있나.. 의문이 든다.
section2를 시작하는 오늘부터
야간자율학습반이 열렸다.
예상했던대로 배정받았다.
정규시간 내에 퀴즈와 코플릿을 풀지 못했으니
당연하다고 생각했다.