유인동님의 함수형 자바스크립트 프로그래밍
을 시작하며
자바스크립트의 함수와 관련된 몇 가지 기능들에 대해 알아보고자 합니다.
고차함수
함수를 인자로 받아 대신 실행하는 함수
xfunction callWith10(val, func) {
return func(10, val);
}
function add(a, b) {
return a + b;
}
callWith10(20, add); // 30
위의 예시에서 일반 함수는 add
함수를 인자로 받아 내부에서 대신 실행하는 함수(고차함수)는 callWith10
이다.
함수를 리턴하는 함수
xxxxxxxxxx
function constant(val) {
return function() {
return val;
}
}
var always10 = constant(10); // 10
constant
처럼 함수를 리턴하는 함수도 고차함수이다.
함수를 대신 실행하는 함수를 리턴하는 함수
xxxxxxxxxx
function callWith(val1) {
return function(val2, func) {
return func(val1, val2);
}
}
var callWith10 = callWith(10);
callWith10(20, add); // 30
var callWith5 = callWith(5);
callWith5(5, sub); // 0
callWith(30)(20, add); // 30
callWith
함수는 함수를 리턴하는 함수이다. 함수를 리턴하는 함수를 사용할 경우 변수에 담지 않고 바로 실행해도 된다.
callWith([1, 2, 3])(function(v) { return v * 10;}, _.map);
// [10, 20, 30]
위의 예제처럼 숫자가 아닌 값도 활용이 가능하다.
고차함수
자바스크립트에서 함수는 일급 객체로 취급한다.
return
을 통해 숫자, 문자열 뿐만아니라 함수도 반환할 수 있다.
고차함수를 사용하면 함수를 인자로 받는 함수를 만들 수 있다.
'Language > JavaScript' 카테고리의 다른 글
자바스크립트 이벤트 루프(Event Loop) (0) | 2020.07.16 |
---|---|
자바스크립트 Array (배열) (0) | 2019.09.18 |
자바스크립트 클로저 (0) | 2019.08.08 |
자바스크립트 스코프 (0) | 2019.08.03 |
자바스크립트 일급함수 (0) | 2019.08.02 |