함수형 자바스크립트를 위한 기초
06 Feb 2019 | 일급함수1.1 함수형 자바스크립트를 위한 기초
가장 중요한점은 함수를 다루는 다양한 방법들을 잘 익히는 것이 중요하다.
1. 일급함수
자바스크립트에서 함수는 일급 객체이자 일급 함수이다. 자바스크립트에서 객체는 일급 객체이다.
여기서 ‘일급’은 값으로 다룰 수 있다는 의미로, 아래와 같은 조건을 만족해야 한다.
- 변수에 담을 수 있다.
- 함수나 메서드의 인자로 넘길 수 있다.
- 함수나 메서드에서 리턴할 수 있다.
자바스크립트에서 모든 값은 일급이다. 자바스크립트에서 모든 객체는 일급 객체이며, 함수도 객체이자
일급 객체다. 그럼 일급 함수는 무엇일까? 보통 일급 함수는 아래와 같은 추가적인 조건을 더 만족한다.
- 아무때나(런타임에서도) 선언이 가능하다.
- 익명으로 선언할 수 있다.
- 익명으로 선언한 함수도 함수나 메서드의 인자로 넘길 수 있다.
자바스크립트의 함수는 위 조건을 모두 만족하는 일급 함수다.
// 예제코드
function f1() {}
var a = typeof f1 == 'function' ? f1 : function() {};
function f2() {
return function() {};
}
console.log((function(a,b){ return a + b; })(10,5));
function callAndAdd(a,b) {
return a() + b();
}
callAndAdd(function() { return 10; }, function() { return 5; });
2. 클로저
클로저는 함수형 자바스크립트에서 매우 중요하며, 계속해서 활용되기 때문에 보다 정확한 이해가 필요하다.
스코프에 대한 개념을 잘 알고 있다면 이 글을 읽는데 도움이 될 것이다.
정의 : 클로저는 자신이 생성될 때의 스코프에서 알 수 있었던 변수를 기억하는 함수이다.
관점에 따라 약간씩 다르지만 클로저라는 용어에 담긴 속성이나 특징들을 모두 빠짐없이 가지고 있는
특별한 함수만을 클로저라고 칭하는 것이 옳다고 생각한다. 함수가 의미적으로나 실제적으로나 진짜 클로저가
되기 위한 가장 중요한 조건은 다음과 같다.
Comments