TIL 21일차 - [JavaScript] 고차함수

Yoon Kyung Park·2023년 5월 9일
0

TIL

목록 보기
21/75
  • 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.

    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에 대한 이해를 기반으로 나머지 고차 함수를 스스로 학습할 수 있다.

    • forEach, find, sort, some, every

      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를 시작하는 오늘부터
야간자율학습반이 열렸다.

예상했던대로 배정받았다.
정규시간 내에 퀴즈와 코플릿을 풀지 못했으니
당연하다고 생각했다.

profile
developerpyk

0개의 댓글