프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • 국비지원
  • 내일배움단
  • 내일배움카드
  • 코드스테이츠
  • 2023 인프콘 후기
  • 자바스크립트비트마스크
  • 모던자바스크립트딥다이브
  • 비트마스크
  • 스파르타코딩클럽
  • 자바스크립트알고리즘
  • 투포인터알고리즘
  • nomadcoders
  • Til
  • 자바스크립트
  • vanilaJS
  • nomadcoder
  • 코딩프로젝트
  • 알고리즘
  • MySQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

[Day 21] 2022-0721 : 고차함수!
TIL

[Day 21] 2022-0721 : 고차함수!

2022. 7. 21. 18:20

오늘 배운 것

  • 자바스크립트 일급 객체와 고차 함수
  • 내장 고차 함수 (배열 메서드 : filter, map, reduce 학습) + 코플릿 문제풀이
  • 고차함수의 중요성 : 추상화
  • 클로저와 커링의 차이? 초간단 정리
 

[JavaScript] 클로저와 커링 초간단 정리

클로저와 커링의 차이가 무엇일까? 클로저 함수 Closure 외부 함수의 변수에 접근 가능한 내부 함수. 내부함수를 리턴하는 외부함수가 존재할 때, 내부 함수에서 외부함수에 있는 변수를 조회하고

friedegg556.tistory.com

새롭게 알게 된 것

일급 객체란?

  • 다른 객체들에게 적용 가능한 연산을 모두 지원하는 객체이다.
    아래의 세가지 특징을 가지면 일급 객체라고 할 수 있다.
1. 변수에 할당할 수 있다.
2. 다른 함수의 전달인자로 전달될 수 있다.
3. 다른 함수의 결과로서 리턴될 수 있다.
  • 자바스크립트에서 함수(함수도 객체이다)는 위 세 가지 모두를 충족하기 때문에 일급 객체, 일급 함수라고 할 수 있는 것이다.
  • 또 다른 의미로는 자바스크립트에서는 함수가 값 처럼 다루어진다는 의미이기도 하다. (변수에 할당할 수 있음.)

고차 함수란?

  1. 다른 함수를 인자로써 전달받는 함수를 의미한다.
    •  이 때 전달이 되는 함수는 콜백함수이다. 
  2. 다른 함수를 결과로써 리턴하는 함수
    • 이런 함수를 커링 함수라고 부른다.

고차 함수가 왜 중요할까요.

  • 시야가 트이고 생산성이 증가하기 때문에 그렇습니다.
  • 추상화라는 것은 복잡한 자료, 모듈, 시스템으로 부터 핵심적인 개념 즉 에센셜을 추출해 내는 것으로 이해할 수 있다.
  • 정확한 내부 동작을 몰라도 이해하고 사용할 수 있기 때문에, 문제를 더 쉽고 빠르게 해결할 수 있다는 장점이 있다.
  • 추상화의 관점에서 바라보면, 함수도 사고 혹은 논리의 모음이다. 자주 사용하는 기능들을 모아서 함수를 하나의 모듈처럼 만들어서 계속 재사용하니깐 말이다. 복잡한 모든 로직을 일일이 다 짜지 않아도 미리 만들어두면 가져다 쓸 수 있으니깐.
  • 추상화를 단순히 값을 전달하는 수준에서 벗어나서, 함수 차원으로 넓어지면 더 고차원에서 생각할 수 있고 그렇기에 시야가 트이고 생산성이 증가한다고 할 수 있다. 

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
    'TIL' 카테고리의 다른 글
    • [Day 23] 2022-0725 : 쉬운 듯 어려웠던 ES6 클래스 문법 + props
    • [Day 22] 2022-0722 : 객체지향과 프로토타입 블로깅 데이
    • [Day 20] 2022-0720 : 섹션 1 마무리✨
    • [Day 19] 2022-0719 : solo 프로젝트 마무리
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바