문제를 풀면서 문제의 의도와 연관된 개념에 대해 정리합니다.
기초적인 클로저 개념과 함수 생성 패턴 이해하기
일급 함수(First-class Function)
일급 함수란, "함수가 다른 변수처럼 다루어진다."는 조건을 만족하는 언어의 함수를 의미합니다. 즉, 함수가 값처럼 취급되는 것을 말합니다.
변수에 함수를 할당할 수 있습니다.
예:
const foo = () => { console.log("hello"); }; foo(); // 변수를 통해 호출함수도 값(value)으로 간주되어 변수에 저장될 수 있습니다.
함수를 다른 함수의 인자로 전달할 수 있습니다.
예:
function gretting(helloFn, name) { console.log(helloFn() + name); } function sayHello() { return "Hello, " } greeting(sayHello, "World!") // Hello, World!이처럼 콜백 함수(callback)로 전달하는 것이 가능합니다.
함수를 반환할 수 있습니다.
함수를 실행한 결과로 다른 함수를 반환할 수 있습니다.
예:
function makeGreeter() { return function() { console.log("Hi!"); }; } const greeter = makeGreeter(); greeter(); // Hi!이렇게 함수를 반환하는 함수를 고차 함수(Higher-Order Function)라고 합니다.
JavaScript 함수는 변수에 할당되거나, 다른 함수에 전달되거나, 함수에서 반환될 수 있기 때문에 일급 객체로 취급됩니다.
- 즉, 함수는 객체이면서 "호출 가능한 값(callable value)"으로 이러한 특징을 통해 고차 함수, 클로저, 함수형 프로그래밍 등을 구현할 수 있습니다.
클로저를 이용해 함수 내부에 상태(state)를 저장하고 관리하기
함수형 인터페이스 설계(메서드 체이닝)와 에러 처리를 통해 테스트 코드의 기본 원리 학습하기
expect(value) 호출 시 내부에서 value를 기억하는 객체를 반환한다.===)와 느슨한 비교(==) 차이 이해=== / !==) 를 사용해서 값과 타입을 비교한다.return false가 아니라 에러를 던져 테스트의 실패를 명확하게 나타낸다.true를 반환하는 테스트 코드의 기본 원리를 학습클로저를 이용하여 상태를 보존하고 조작하는 패턴 다루기
createCounter(init) 호출 시내부에 상태를 저장createCounter가 반환하는 객체의 함수들만 내부 상태에 접근하여 값을 변경할 수 있다.캡슐화(Encapsulation)
- 캡슐화는 데이터와 함수를 하나의 컴포넌트(예: 클래스 또는 객체)로 묶는 개념입니다.
- 컴포넌트 내부 구현(데이터 구조 또는 내부 함수)은 외부에 노출하지 않고, 외부에서는 정해진 인터페이스(메서드 등)를 통해 접근하도록 제어합니다.
- 이를 통해 내부 구현을 숨기면서 필요한 기능만 외부로 제공합니다.