Hah-nna / Tech_Interview

0 stars 0 forks source link

함수형 프로그래밍이란? #75

Open young-02 opened 9 months ago

young-02 commented 9 months ago

함수형 프로그래밍이란?

프로그래밍 패러다임 중 하나로, 순수 함수 와 불변성을 강조하며 프로그램의 상태 변경을 최소화 하는 것을 목표로 한다. 함수형 프로그래밍은 수학적 함수의 개념을 기반을 두고 있으면, 이를 통해 코드의 간결성, 모듈성 및 예측 가능성을 높일 수 있다.

함수형 프로그래밍의 주요 특징

복잡한 상태 관리와 부작용을 최소화하고, 모듈화와 재사용성을 높이는데 도움이된다.(하스겔,클로저,스칼라 및 에릭슨)

함수형프로그래밍 장점

꼬리질문

자바스크립트 클로저란?

주변 상태 (어휘적 환경)에 대한 참조와 함께 묶인(포함된) 함수의 조합. 클로저는 내부 함수에서 외부 함수의 범위에 대한 접근을 제공한다. javascript에서 클로저는 함수 생성 시 함수가 생성될 때마다 생성된다.

function init(){
    var name = 'Mozilla'; // name은 init에 의해 성성된 지역 변수.
    function displayName() { // displayName() 은 내부 함수이며, 클로저이다.
        console.log(name) // 부모 함수에서 선언된 변수를 사용한다.
    }
    displayName()
}
init()

displayName()은 init()안에 정의된 내부 함수이며 init() 함수 본문에서만 사용할 수 있다. 내부 함수에서 외부 함수의 벼눗에 접근할 수 있기 때문에, displayName() 역시 부모 함수 init()에서 선언된 변수 name() 접근할 수 있다.

function makeFunc() {
    const name = "Mozilla"
    function displayName(){
        console.log(name);
    }
    return displayName;
}
const myFunc = makeFunc()
myFunc()

클로저는 함수와 함수가 선언된 어휘적 환경의 조합입니다. 이 환경은 클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다.

클로저가 필요한 이유

  1. 정보의 접근 제한(캡슐화) - Private Method를 구성 할 수 있다.
    • 같은 클래스 내부의 특정 메소드에서만 해당 메소드를 호출이 가능한 것을 의미
  2. 상태 유지
    • 클로저 함수는 외부 함수의 실행이 끝나더라도 외부 함수 내 변수를 사용 할 수 있기에 이러한 특성을 이용하여 특정 데이터를 스코프 안에 두고 계속 최신 상태로 유지하여 사용합니다.
    • react 내에서는 상태관리로 사용 되는 useState가 이를 의미한다.
  3. 전역 변수의 사용 억제 - 모듈화에 유리
    • 클로저 함수를 각각의 변ㅅ에 할당하면 각자 독립적으로 값을 사용하고 보존할 수 있다.
    • 함수의 재사용성을 극대화 함수 하나를 독립적인 부품의 형태로 분리하는 것을 모듈화라 한다.

      자바스크립트 프로토타입이란?

      자바스크립트의 모든 객체는 프로토타입(prototype)이라는 객체를 가지고 있다. 모든 객체는 그들의 프로토타입으로 부터 프로퍼티와 메소드를 상속받는다. 상속되는 정보를 제공하는 객체를 프로토타입 이라한다.

참조 : https://thecho7.tistory.com/entry/%EB%A9%B4%EC%A0%91-%EA%BF%80%ED%8C%81-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8DFunctional-Programming%EC%9D%B4%EB%9E%80 https://code-lab1.tistory.com/245