higher order function 고차함수

KoEunseo·2022년 7월 21일
0

javascript

목록 보기
10/32

자바스크립트에서 함수는 일급 객체이다.(first class citizen)

  • 변수에 할당 가능
  • 다른 함수의 전달인자로서 전달 가능
  • 다른 함수의 결과로서 리턴 가능
    👉 함수를 데이터처럼 다룰 수 있다.
  1. 함수표현식
const addTwice = function (num) {
 return num + num
}

//변수 addTwice에는 함수가 할당되어 있으므로 
//일급객체로서 함수 호출 연산자 ()를 사용할 수 있다.
output = addTwice(7)

콜백함수: 다른 함수의 전달인자로 전달되는 함수

고차함수

  1. 함수를 인자로 받는 함수
function addTwice(num) {
  return num + num;
}

function doubleNum(func, num) { //다른 함수를 인자로 받는 고차함수
  return func(num); //func는 doubleNum의 콜백함수
}

let output = doubleNum(addTwice, 4); //addTwice는 doubleNum의 콜백함수
console.log(output); //8
  1. 함수를 리턴하는 함수
function adder(added){ //인자 하나를 받아서 다른 함수 리턴
    added = 2 + added;
    console.log(added)
    return function (num) { //리턴되는 익명함수는 인자 한개를 받아서 added와 더한값 리턴
        return num + added;
    }
}

adder(5)(3);// 7 / 10
const add3 = adder(3); //adder가 리턴하는 함수 변수에 저장 가능
output = add3(2);
  1. 함수를 인자로 받고, 함수를 리턴
function double(num) {
	return num * 2;
}

function doubleAdder(added, func) {
	const doubled = func(added);
  	return function(num) {
  		return num + doubled;
  	}
}

doubleAdder(5, double)(3); //13
const addTwice3 = doubleAdder(3, bouble);
addTwice3(2); //8

filter

기본적으로 내장된 고차함수.
필터링되는 기준이 되는 특정 조건은 함수 형태로 필터메서드의 전달인자에 전달됨
기존 배열을 수정하지 않는다.

조건에 따라 필터링을 함!

map

기존 배열을 수정하지 않는다.
배열의 각 요소가 함수에 의해 다른 요소로 지정됨

reduce

배열의 각 요소가 함수에 따라 하나의 형태로 응축됨.
초기값이 주어지지 않으면 첫번째 요소를 초기값으로 지정한다.
arr.reduce(함수, 초기값)

여러 요소를 하나로 합침!


profile
주니어 플러터 개발자의 고군분투기

0개의 댓글