[자바스크립트] Higher Order Functions

트릴로니·2022년 7월 31일

자바스크립트

목록 보기
25/31

고차함수

  • 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 말한다.
  • 인자로 받은 함수를 필요한 시점에 호출하거나(함수를 인자로 전달받음) 클로저를 생성하여 반환한다(함수를 결과로 반환)
function letAdamLogin() {
	let array = [];
    for(let i=0; i<1000000; i++){
    	array.push(i)
    }
    return 'Access Granted to Adam'
}

function letEvaLogin() {
	let array = [];
    for(let i=0; i<100000; i++){
    	array.push(i)
    }
    return 'Access Granted to Eva'
}

letAdamLogin();
letEvaLogin();

위 코드는 중복코드가 많아 좋지 않은 코드이다. 아래와 같이 수정할 수 있다.

const giveAccessTo = (user) => 'Access Greanted to ' + user

function letUserLogin(user) {
	let array = [];
    for(let i=0; i<1000000; i++){
    	array.push(i)
    }
    return giveAccessTo(user);
}

letUserLogin('Eva');
const giveAccessTo = (user) => 'Access Greanted to ' + user

function authenticate () {
	let array = [];
    for (let i=0; i<verify; i++){
    	array.push(i)
    }
    return true;
}

function letPerson(person, fn) {
	if(person.level === 'admin'){
    	fn(500000)
    }else if(person.level === 'user'){
    	fn(100000)
    }
    return giveAccessTo(person.name)
}

letPerson({level: 'user', name: 'Tim'}, authenticate)
const multiplyBy = function (num1) {
	return function(num2) {
    	return num1*nu2
    }
}
const multiplyByTwo = multiplyBy(2);
multiplyByTwo(4);
//8

const multiplyByFive = multiplyBy(5)
multiplyByFive(6) 
//30
  • each bracket shows you how to call the function so that we can do something like this
const multiplyBy = (num1) => (num2) => num1*num2;
multiplyBy(4)(6)
//24

0개의 댓글