chapter1. 소개

남자김용준·2021년 4월 26일
0

함수형 프로그래밍은 성공적인 프로그램을 위해 부수 효과를 최대한 멀리하고 조합성을 강조하는 프로그래밍 패러다임이다.

부수 효과를 최대한 멀리하는 이유는

1. 오류를 줄이기 위해서
2. 조합성 혹은 모듈화 수준을 높이기 위해서

자바스크립트에서 함수는 일급 객체이자 일급 함수이다.
자바스크립트에서 객체는 일급 객체다.

일급은 값으로 다룰 수 있다는 의미로,

1. 변수에 담을 수 있다.
2. 함수나 메서드의 인자로 넘길 수 있다.
3. 함수나 메서드에서 리턴할 수 있다.

일급 함수는 아래의 추가 조건을 만족시켜야 한다.

1. 아무 때나 선언이 가능하다.
2. 익명으로 선언할 수 있다.
3. 익명으로 선언한 함수도 함수나 메서드의 인자로 넘길 수 있다.

function f1() {}
var a = typeof f1 == 'function' ? f1: function(){};

function f2(){
  return function(){};
}

(function(a,b){return a+b;})(10,5);
//15

function callAndAdd(a,b){
  return a() + b();
}
callAndAdd(function(){return 10;}, function(){ return 5; });

클로져

클로저는 자신이 생성될 때의 환경을 기억하는 함수이다.

  • 클로저는 자신이 생성될 때의 스코프에서 알 수 있었던 변수를 기억하는 함수이다.
  • 클로저는 자신이 생성될 때의 스코프에서 알 수 있었던 변수 중 언젠가 자신이 실행될 때 사용할 변수들만 기억하여 유지시키는 함수다.
  • 클로저가 기억하는 변수의 값은 언제든지 남이나 자신에 의해 변경될 수 있다.

글로벌 스코프를 제외한 외부 스코프에 있었던 변수 중 클로저 혹은 다른 누군가가 참조하고 있지 않는 모든 변수는 실행 컨텍스트가 끝난 후 가비지 컬렉션 대상이 된다.

고차함수

1. 함수를 인자로 받아 대신 실행하는 함수
2. 함수를 리턴하는 함수
3. 함수를 인자로 받아서 또 다른 함수를 리턴하는 함수

profile
frontend-react

0개의 댓글