-
자바스크립트에서 함수는 first-class object다.Dev/JavaScript 2014. 4. 2. 11:35
자바스크립트를 공부하다보면 first-class object(또는 citizen)라는 정의를 종종 볼 수가 있다.
이 first-class object는 무엇인지 찾아봤다.
http://en.wikipedia.org/wiki/First-class_citizen
http://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4
대충 정리하면
- 변수에 저장 할 수 있어야 한다.
- 함수의 파라미터로 전달 할 수 있어야 한다.
- 함수의 반환값으로 사용 할 수 있어야 한다.
- 자료 구조에 저장 할 수 있어야 한다.
위와 같은 조건들을 충족하는 객체를 first-class object라 한다.
그럼 자바에서 함수, 즉 메소드는 first-class object 일까?
자바의 메소드는 first-class object 가 아니다!!!
찾아보면 되는 것도 있지 않을까라는 생각을 했지만 안된다. 한 두가지는 만족 시킬 수 있겠지만 자바에서 함수 자체는 first-class object가 될 수 없다.
C에서도 기본 자료형은 First-class object이지만, 함수는 First-class object가 아니다.
아래 예제를 보면 JavaScript의 함수가 first-class object 조건을 충족하는 형태를 볼 수 있다.
'Dev > JavaScript' 카테고리의 다른 글
Javascript에서 "===" 연산자의 의미 (0) 2014.10.16 Extjs Remove the colon(:) in FieldLabel (0) 2014.06.11 ToolTips not wide enough to see contents (1) 2014.05.23 JavaScript 올림, 반올림, 내림 (0) 2014.04.15 Function Declarations(함수선언) vs Function Expressions(함수표현) (0) 2014.04.09 JavaScript에서 "strict mode"를 사용해야 하는 이유 (0) 2014.04.01 JavaScript 에서 var 사용이 중요한 이유 (0) 2014.03.31 Extjs How to selecting row after store.load() (0) 2014.03.19 Extjs Treepanel: CSS to change default icons (0) 2014.02.12 Extjs pagingtoolbar refresh button hide (0) 2014.02.07