본문 바로가기

javascript26

Closure(클로저) Closure 함수가 실행되었을 때의 렉시컬 환경 function outer() { const x = 10 const inner = function () { console.log(x) } return inner } const closure = outer() closure() 외부함수 outer 에서 선언한 변수 x와, x를 출력하는 함수 내부함수 inner outer 함수는 inner 함수를 반환하고 life-cycle 종료 변수 closure 에 outer 함수를 할당하고 실행 10 출력 outer 함수는 변수 x와 내부함수 inner 를 선언하고, inner 함수를 반환하고 수명을 다한다. 하지만 outer 함수를 closure 변수에 할당하고 실행하니 이미 수명을 다한 outer 함수에서 선언한 x.. 2023. 7. 31.
컨트롤러(Controller) 컨트롤러 컨트롤러는 클라이언트의 요청을 처리한 후 서버에서 처리된 결과를 반환해주는 역할을 한다. 클라이언트의 요청을 수신하고, 요청에서 들어온 데이터 및 내용을 검증한 뒤 서버에서 수행된 결과를 클라이언트에 반환한다. 프레젠테이션 계층(Presentation Layer) 프레젠테이션 계층은 대표적으로 컨트롤러로 사용된다. 사용자가 서버에 요청을 하게 되면 가장 먼저 만나게 되는 계층이다. 하위 계층(서비스 계층, 저장소 계층) 에서 발생하는 예외(Exception)를 처리한다. 클라이언트가 전달된 데이터에 대해 유효성을 검증하는 기능을 수행한다. 클라이언트의 요청을 처리한 후 서버에서 처리된 결과를 반환한다. Express 에서의 컨트롤러 클라이언트의 요청을 받음 요청에 대한 처리는 서비스에 전달 클라.. 2022. 12. 10.
객체지향 프로그래밍(OOP, Object Oriented Programming) 객체지향 프로그래밍 프로그램의 처리단위가 객체인 프로그래밍 방법 현실 세계를 모델링하는 대표적인 프로그래밍 패러다임 데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식 코드를 추상화해 직관적으로 사고할 수 있다. 현실 세계의 객체를 유연하게 표현할 수 있고 각각의 특성을 가지고 있어 특정 기능을 수행할 수 있다. 예를 들어 자동차는 객체이고 출발, 정지, 운행 등과 같은 기능을 수행할 수 있다. 객체지향 프로그래밍을 사용해야 하는 이유 만약 API 를 만들 때 복사-붙여넣기 방식으로 동일한 코드를 여러 군데 분산 시켜 놓는다면, 해당 로직을 수행할 때 복사한 코드를 일일히 찾아가며 수정을 해야하는 상황이 발생한다. 객체지향 프로그래밍을 사용한다면 코드 변경점이 발생하더라도 최소한의 수정.. 2022. 12. 10.
객체지향(Object-Oriented) 객체지향 소프트웨어의 핵심을 기능이 아닌 객체로 삼으며, 누가 어떤 일을 할 것인가에 초점을 맞춘다. 즉 객체를 도출하고 각각의 역할을 정의하는 것에 초점을 맞춘다. 책임과 권한을 가진 객체들이 서로 메시지를 주고받으며 협력해서 필요한 기능을 수행하도록 시스템을 개발하는 것을 객체 지향이라고 한다. 객체지향 vs 절차지향 객체지향적인 소프트웨어가 절차지향적인 소프트웨어와 다른 점은 캡슐화, 다형성, 클래스 상속을 지원하는지의 여부와 데이터 접근 제한을 걸 수 있는지이다. 캡슐화 캡슐화란 객체 내부의 세부적인 사항을 감추는 것을 말한다. 아이들에게 가루약을 먹일 때 아이들은 가루를 보면 쓸 것이라고 생각하고 잘 먹지 않을 것이다. 하지만 캡슐 안에 가루를 숨겨서 삼키게 하면 아이들 도 잘 먹을 수 있는 것.. 2022. 12. 10.
반응형