[TIL/모던 자바스크립트 Deep Dive] 2023/05/24
12장. 함수 12-7. 다양한 함수의 형태(이어서...) > 중첩 함수 함수 내부에 정의된 함수를 라 한다. 중첩 함수를 포함하는 함수는 라 부른다. 중첩 함수는 외부 함수 호출할 수 있다. > 콜백 함수 특정 작업을 반복 수행하는 repeat 함수를 정의
12장. 함수
12-7. 다양한 함수의 형태(이어서...)
중첩 함수
함수 내부에 정의된 함수를 ``중첩 함수(nested function) 또는 내부 함수(inner function)`라 한다. 중첩 함수를 포함하는 함수는 `외부 함수(outer function)`라 부른다. 중첩 함수는 외부 함수 `내부에서만`` 호출할 수 있다.

콜백 함수
특정 작업을 반복 수행하는 repeat 함수를 정의해 봤다.

repeat 함수는 console.log(i)에 강하게 의존하고 있어 다른 작업을 수행할 수 없다. 만약 repeat 함수의 반복문 내부에서 다른 일을 하고 싶다면, 함수를 새롭게 정의해야 한다.

위 예제의 함수들은, 반복하는 일의 '내용'만 다르다. 함수의 일부분만이 다른데 매번 함수를 새롭게 정의해야 한다. 함수의 변하지 않는 공통 로직은 미리 정의해 두고, 경우에 따라 변경되는 로직은 추상화해서 함수 외부에서 함수 내부로 전달하는 '함수 합성'이 해당 문제를 해결할 수 있다.

repeat 함수는 더 이상 내부 로직에 강력히 의존하지 않고 외부에서 로직의 일부분을 함수로 전달받아 수행하므로, 더욱 유연한 구조를 갖게 되었다.
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 ``콜백 함수(callback function)`라고 하며, 매개변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수를 `고차 함수(Higher-Order Function, HOF)``라고 한다.
'중첩 함수'와 '콜백 함수'는 모두 헬퍼 함수로서의 역할을 한다. 다만, 중첩 함수는 고정되어 있기에 교체가 곤란하지만, 콜백 함수는 함수 외부에서 고차 함수로 주입하기 때문에 자유롭게 교체할 수 있다는 차이가 있다. 즉, 고차 함수는 콜백 함수를 자신의 일부분으로 합성한다.
콜백 함수는 고차 함수에 의해 호출되는데, 이때 고차 함수는 필요에 따라 콜백 함수에 인수를 전달할 수 있다. 따라서 고차 함수에 콜백 함수를 전달할 때 콜백 함수를 호출하지 않고 함수 자체를 전달해야 한다. 콜백 함수가 고차 함수 내부에서만 호출된다면, 콜백 함수를 익명 함수 리터럴로 정의하면서 곧바로 고차 함수에 전달하는 것이 일반적이다.

콜백 함수를 다른 곳에서도 호출할 필요가 있거나, 콜백 함수를 전달받는 함수가 자주 호출된다면 함수 외부에서 콜백함수를 정의하고 '함수 참조'를 고차 함수에 전달하는 편이 효율적이다.

콜백 함수는 함수형 프로그래밍 패러다임뿐만 아니라 비동기 처리에 활용되는 중요한 패턴이다.

콜백 함수는 비동기 처리뿐 아니라 배열 고차 함수에서도 사용된다. 가볍게 살펴봤다. 자세한 내용은 27장에서 다룬다고 한다.

More to read
AI&ML 기초
Reference: https://bettermesol.github.io/ml/2019/09/16/ai-ml-dl/AI: 기계가 사람처럼 생각하고 판단하게 만드는 가장 넓은 범주의 기술입니다.ML: 데이터를 학습하여 스스로 규칙을 찾아내는 AI의 한 분야로,
'AI Agent Economy'Novitas : AI Agent가 지갑을 가지는 세상
얼마 전, 미래에셋증권 리서치 리포트(올해는 이더리움이다: 에이전트 시대의 Near Automata)를 접하게 되었습니다. AI Agent를 인간과 함께할 경제 주체로 바라보는 시각에 적잖이 충격을 받았더랬죠.한 가지 짚고 넘어갈 부분이 있습니다. 우리가 흔히 'AI'
'ERC-8004'Novitas: AI 에이전트 경제 주체
Web 4.0을 한 문장으로 정의하면 Sovereign Transact입니다.AI가 인간의 허락 없이 지갑을 소유하고, 결제를 수행하며, 인프라를 통제하는 주권적 경제 주체가 되는 세계입니다. Web 3.0이 블록체인 기반의 탈중앙화를 실현했다면, Web 4.0은 그