본문 바로가기
javascript

[자바스크립트] 함수는 값이다 그리고 일급객체다

by jinbro 2017. 5. 12.
[먼저 보면 좋은 게시글]
- [자바스크립트] 객체란 무엇인가 그리고 함수는 객체다 - http://jinbroing.tistory.com/113


[자바스크립트 함수는 값]
- 자바스크립트는 함수를 값으로 취급함
- 값의 형태는 객체(object)


[자바스크립트 함수 특징]
- 자바스크립트 함수는 값(object)으로 변수에 저장할 수 있음
- 자바스크립트 함수는 자료구조(array, object 등)에 저장할 수 있음
- 자바스크립트 함수는 다른 함수의 인자로 전달할 수 있음
- 자바스크립트 함수는 return 값으로 사용될 수 있음


[일급시민과 일급객체란 무엇인가]
- 일급시민(first class citizen)이란 값으로 다룰 수 있음을 뜻함, 예를 들어 값에는 숫자와 문자가 있음
- 일급객체(first class object)란 특정 언어에서 객체를 일급 시민으로 취급한다는 것
- 아래의 조건을 만족한다면 값으로 다뤄지고 있다고 보면됨(일급 시민)

1) 변수와 자료구조(배열, 객체)에 저장될 수 있어야함



2) 함수의 인자로 전달가능하며
3) 함수의 반환값으로 사용될 수 있어야함
4) 동적으로 프로퍼티 생성 및 할당이 가능(객체의 프로퍼티)

- 다시 한번 일급객체의 정의 : 특정 언어(자바스크립트)에서 객체(함수)를 일급시민으로 취급한다는 것
- 자바스크립트 함수는 객체, 그 객체는 값으로 사용할 수 있음, 즉 일급객체 라는 것


[자바스크립트 함수와 일급 객체]
- 자바스크립트 함수는 일급시민의 조건을 모두 만족되게끔 만들어져있음
- 값처럼 사용 가능함, 값의 형태는 객체(객체의 개념이 이해가 안된다면, 먼저 보면 좋은 게시글 참고)
- 그래서? 함수는 일급객체이기 때문에 고차함수, 클로저, 콜백패턴을 사용할 수 있음
  (일급객체이기 때문에라는 대목이 이해가 안된다면 위의 일급시민의 조건을 보라)


[앞으로 더 살펴볼 것]
- 고차함수
- 클로저
- 콜백함수


[참고자료]
- 개인블로그, 자바스크립트에서 함수는 값으로 취급된다 : http://webclub.tistory.com/114
- 위키피디아, 일급객체 : https://goo.gl/LJrHGp
- MDN, 함수 : https://goo.gl/4CeNuw

- 개인블로그, JavaScript의 함수는 1급 객체(first class object)이다 : http://bestalign.github.io/2015/10/18/first-class-object/



댓글