일급 함수(일급 객체)는 변수처럼 다룰 수 있음
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 : 함수를 전달해서 상황에 따라 적절한 함수를 호출하도록 하는 것
예
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개를 받아 합을 리턴하는 함수를 리턴
함수를 인자로 받거나 함수를 반환하는 함수
예: Array.map() 메소드 - 배열 내 모든 요소를 인자로 제공받는 callback 함수를
호출하여 새로운 배열을 만듬
인자를 여러 개 받는 함수를 분리하여 인자가 하나인 함수의 체인(중첩 함수)으로 만드는 방법
함수의 전달인자 몇 개를 미리 채워 더 간단한 함수를 만드는 방법
함수를 재사용하는데 유용하게 쓰일 수 있는 기법
매개 변수가 항상 비슷할 때 유용
외부 함수 인자는 변하지 않는 것
내부 함수 인자는 변하는 것
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);