* 고차함수
- 함수를 인자로 받거나, 함수를 리턴하는 함수
map, filter 등
* 일급함수
- 언제나(런타임에서도) 선언 가능
- 익명 선언 가능
- 함수의 인자로 사용 가능
* 클로저
- 내부함수이고 리턴되어 메모리가 해제되지 않음
- 자신의 외부 변수를 사용하지 않으면 해제됨
- 실행환경을 기억(메모리가 해제되지 않음)
- 기억하고 있는 환경은 변경될 수 있음
//-----------------------
* 커링함수(currying)
- 함수의 인자 수보다 적은 수의 인자를 받으면 누락된 인자를 받는 기법
- 고차함수의 보조함수(콜백함수)로 활용
//일반 함수
var sum = function (x, y, z) { return x+y+z;}
//커링 함수
var sum2 = function(x) {
return function(y) {
return function(z) {
return x+y+z;
};
};
};
ret = sum(1,2,3);
ret = sum2(1)(2)(3);
일반함수를 커링함수로 만들기
var sum3 = _.curry(sum); //lodash 이용
//---------------------
- function 의 프로토타입 메서드 bind()를 이용해 커링 효과를 낼수 있다.
function add(a, b) {
return a + b;
}
var add10 = add.bind(null, 10);
ret = add10(20);// 30
//--------------
// 부분 적용 (Partial Application)
- 인자를 미리 부분적으로 적용
- bind는 앞부터 순차적으로 적용해야 하는 제한
- 함수의 중간 인자를 미리 부분적용 하는 경우
function abc(a, b, c) {
console.log(a, b, c);
}
var ac = _.partial(abc, _, 'z'); //lodash 이용
ret = ac('a', 'c'); // a z c
'Code > JavaScript' 카테고리의 다른 글
[Javascript] 문서로딩 완료 코드 실행 되는 순서 (0) | 2020.07.09 |
---|---|
[JavaScript] TypeScript 사용법 (0) | 2020.06.26 |
[Javascript] Lodash 같은 라이브러리 만들기 (0) | 2020.04.04 |
[Javascript] 배열, 객체 Deep Copy (0) | 2020.04.04 |
[Javascript] call(), apply(), bind() 차이 (0) | 2020.04.03 |