퍼스트 클래스와 고차함수

이동환·2020년 8월 28일
1

TIL

목록 보기
17/74

오랜만에 TIL 이다. 어제 찝찝함에 대해 적고 나서 내가 뭘 더 해야겠다는게 느꼈고, 내가 그 찝찝함을 만들었다는 생각이 들어서 더 열심히 공부하기로 했다 .

최근에 solo week동안 복습을 했다. 공부량이 적고, 새로운 개념이라기 보다는 조금 부족했다고 느껴졌던 부분을 복습해서 TIL을 쓰기 않았다. 근데 오늘부터 복습한것도 TIL에 적을려고 한다.

이 챕터를 공부하면서, 코드 스테이츠가 권장하는 goal을 적어봤다.

  • 일급 객체의 가지 특징
  • 고차함수를 설명할 수 있다.
  • 추상화(abstraction)을 설명 할 수 있다.
  • 추상화 관점에서 고참함수가 갖는 이점을 안다.
  • 배열 매소드를 잘 사용할 수 있다.
  • 과함수를 사용하여 프로그램 작성 가능하다.

퍼스트 클래스 객체

: 자바 스크립트에서는 함수를 특별하게 취급하고 있다.

1. 함수를 변수에 할당할 수 있다(=함수 표현식).

ex) let func = function(){
  console.log('it works');
}

2. 다른 함수의 인자로 사용되어질 수 있다.(= 콜백함수)

ex) 
function double(num) {
  return num * 2;
}
function doubleNum(func, num) {
  let doubledArr = [];
  return func(num);
}
let output = doubleNum(double, 4);
console.log(output); // -> 8

3. 다른 함수의 결과로서 리턴 되어질 수 있다.(=커리함수)

ex)
function adder(added) {
  return function (num) {
    return num + added;
  };
}
let output = adder(5)(3); // -> 8
console.log(output); // -> 8
const add3 = adder(3);
output = add3(2);
console.log(output); // -> 5

즉, 함수를 원시적 데이터 타입(pritimative : string, number, Boolean ect)와 같이 취급하고 사용할 수 있다.

변수에 함수를 할당할 경우.

  • 변수에 함수를 담아서 사용하는 경우를 '함수 표현식'이라고 한다. 함수 선언식과 다르게 표현식을 사용할 경우, 호이스팅기능이 지원되지 않는다. 호이스팅이 되지않아 불편해 보일 수 있겠지만, 나중에 코드가 많을때, 유지보수하기가 힘들어진다. 또 다른 장점으로 사용된 코드의 위치도 어느정도 예측이 가능하다. 그렇게 선언식보다는 표현식을 선호해야한다.
    이와 비슷하고 var 보다는 let 과 const 를 사용하는 이유도 같다.

고차함수

: 고차함수란 다른 함수를 인자로 받거나, 다른 함수를 리턴하는것을 말한다. 여기서 인자로 받게되면, 우리는 이것을 콜백함수라고 한다. 이 함수는 어떤 작업이 완료되었을때, 호출되는 경우가 많아서 답신하는 전화를 뜻하는 콜백이라는 이름을 가지게 되었다고 한다.
한편, 함수만 리턴하는것은 '커리함수'라고 한다.

추상화(abstract)

: 컴퓨터 공학에서 추상화란, 요약이다.
즉, 어떤 복잡한것을 압축해서 핵심만 추출한 상태로 만드는것이 추상화이다.
(abstract라는 용어는 추출하다라는 뜻도 가지고 있다. 왜 추상화라고 부르는지는 모르겠지만, 결국 핵심만 추출하는작업이라고 생각하면 될것같다.)

profile
UX를 개선하는것을 즐기고 새로운것을 배우는것을 좋아하는 개발자입니다.

0개의 댓글