[TIL] 2020/08/14

yongkini ·2020년 8월 14일
0

Today I Learned

목록 보기
6/173
post-thumbnail

Today, I Learned

  • 일급 객체 : 일급?(=first class)=> 특별한 대우를 받는 객체 => 특별한 대우 : 값으로 취급돼서 변수로 할당이 가능하고, 함수의 인수로도 줄 수 있고, 함수의 리턴값으로도 줄 수 있는 것 = 함수(function)
  • 고차함수의 정의 : 함수를 인수로 받는 함수, 함수를 리턴 값으로 주는 함수, 함수를 인수로 받으면서 리턴값으로 함수를 주는 함수
  • 추상화 개념 : 개인적으로굉장히 철학적인 용어라고 생각되는 단어. 객체 지향 프로그래밍에서도 추상화는 많이 등장하는 용어인데, 고차함수에서 추상화를 나만의 방식으로 정리해보면, 여태까지 우리는 다양한 함수들을 직접 그 로직을 구현하며 사용해왔다. 이는 어떻게보면 추상화의 반대인 구체화(?) 과정이였다고 할 수 있다. 그러나, 조금더 고차원적인 사고를 하려면 반대로, 원시적인 사고는 이미 당연한 것처럼 할 수 있어야한다. 예를 들어, 자동차를 운전하려면, 시동이 어떻게 걸리는지의 방대한 기계 공학적 원리보다는 '시동을 건다 = 버튼을 누른다'처럼 심플한 정보하나면 충분하다. 그렇듯 고차함수도 본래 하나하나 구현하면서, 로직을 짜야할 함수들을 당연히 아는 것처럼 가져와서 씀으로서 고차원적인 사고를 할 수 있도록 해주는(짜잘한 것에 신경을 안쓰면 더 고차원적인 사고를 할 수 있으니까!)
  • 오늘 배운 고차함수 : map, filter, reduce, find
  • map : 이 배열에서 '내가 원하는 요소만' 새 배열에 넣어서(return x) 리턴해줘라고 생각하기. 이 때, map함수가 for문처럼 탐색을 하다가 '내가 원하지 않는 요소'를 만나게 되면 새배열에 넣지 않는 대신 undefined를 넣는다(무조건 뭔가를 return하는 구조인데, 아무것도 return하지 않아서 그런 것 같다!)
  • filter : 이 배열에서 '이 기준을 충족시키는 것만 골라서 새배열을 만들어줘'라고 생각하기. return Boolean 타입 자료를 해줘서 리턴 값이 true면 추가하고 false면 추가하지 않는 구조로 되어있다. 말그대로 필터링할 때 쓰면 좋다.
  • reduce : 처음에는 로직을 이해하기 어려웠는데, 나만의 용어로 정리해보자면, 토너먼트 만들기이다. reduce안에 함수를 인수로 주는데, 이 함수는 function(x,y) {} 을 예로 들어보면, x는 시작하는 값, y는 토너먼트 첫번째 상대값으로 생각하고, 예를 들어, return x+y면 시작값에서 y를 더해주고, 그 더한 결과값을 리턴후에 다음 y과 배틀(?)해서 토너먼트식으로 최종 더한 값을 리턴하는 식!(인수로 시작값을 설정해놓을 수 있다)
  • find : 주어진 판별함수를 만족하는 첫번째 값을 리턴함(중복되는 최대값 문제에서 앞선 숫자를 리턴하는 문제에 쓰면 좋을 메서드)
  • twittler 홈페이지 과제 제출 완료

Planning to Study

  • 코드스테이츠 1~3주차 복습
  • Twittler '10분전' 기능 만들기, Storage API 써보기

Comment

깊게 모든걸 암기하고, 이해해버리려고 하기보다는, 모르면 찾아보고, 또 보고, 까먹으면 또 보고 한다는 마인드로 공부하자

profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글