일급 함수, 콜백 함수, 함수 리턴, 커링

prol·2023년 12월 24일

일급 함수

일급 함수(일급 객체)는 변수처럼 다룰 수 있음

const print = function() {
    console.log('일급 함수 예제')
}
print();
const printAgain=print;
printAgain();

function plus(a,b){
    return a+b;
}
// 함수를  parameter로 받는 함수
function calculate(a, b, func){
    return func(a,b)
}
console.log(calculate(10,20,plus));

함수의 프로퍼티
caller - 호출 함수
length - 인자 개수
name
prototype - 프로토타입 객체의 참조
apply()/call()
함수 실행: this 값과 함수 인자 이용
bind(): 객체에 함수를 바인드

Callback function

callback : 함수를 전달해서 상황에 따라 적절한 함수를 호출하도록 하는 것

예

  • addEventListner()에 전달되는 함수 (이벤트 처리기)
  • 타이머 함수에 전달되는 함수: setInterval(f(), tm); setTimeout(f(), tm);
const sum = (a, b) => a + b;
const printResult = (result) => {
console.log(`결과는 ${result} 입니다.`);
};
const calculationAndPrint = (calculationResult, callback) => {
callback(calculationResult);
};
calculationAndPrint(sum(10, 20), printResult);

함수 리턴

const returnFunction = () => (a, b) => a + b;
const plus = returnFunction();
console.log(plus(10, 20));

인자를 받지않고 호출됨
인자 2개를 받아 합을 리턴하는 함수를 리턴

고차 함수 higher-order function

함수를 인자로 받거나 함수를 반환하는 함수
예: Array.map() 메소드 - 배열 내 모든 요소를 인자로 제공받는 callback 함수를
호출하여 새로운 배열을 만듬

커링 curring

인자를 여러 개 받는 함수를 분리하여 인자가 하나인 함수의 체인(중첩 함수)으로 만드는 방법
함수의 전달인자 몇 개를 미리 채워 더 간단한 함수를 만드는 방법
함수를 재사용하는데 유용하게 쓰일 수 있는 기법
매개 변수가 항상 비슷할 때 유용
외부 함수 인자는 변하지 않는 것
내부 함수 인자는 변하는 것

2개 이상의 화살표로 함수를 정의하는 것
화살표 개수만큼 인자(파라미터)를 전달해야 함
화살표 개수보다 적은 개수의 인자를 전달 받으면 함수를 리턴

const coffeeMachine = liquid => espresso => `${espresso}+${liquid}`;
const americanoMachine = coffeeMachine('water');
const latteMachine = coffeeMachine('milk');
const americano = americanoMachine('americano : coffee bean');
const latte = latteMachine('latte : coffee bean');
console.log(americano);
console.log(latte);

0개의 댓글