일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자료구조 #알고리즘
- #국제채권시장 #유로본드 #유로커런시 #유로달러 #외국채 #금융중개기관 #간접금융 #거래비용#다우존스공업평균지수 #나스닥종합지수 #FTSE100 #DAX #CAC40 #straittimes #항생지수 #거래비용 #유동성 #위
- 미쉬킨의화폐와금융 #미쉬킨 #화폐금융론 #화폐와금융 #경제학 #교양 #경제지식 #경제공부
- vp #vc #did #신원인증 #블록체인
- 블록체인 #layer2 #레이어2 #이더리움스케일링
- #경제상식 #화폐 #금융 #화폐금융론 #경제학 #경제기본 #경제지식 #경제근육 #투자지식 #경제공부 #경제학전공 #금융이란 #화폐란 #금융시장 #금융시장역할 #화폐역할 #화폐역기능 #금융역기능 #
- html #js #parsing
- 페이스북유니버시티 #마케팅교육 #마케팅캠프
Archives
- Today
- Total
평행우주 : world 1
[JS] 일급 객체와 함수 First-class citizen 본문
First-class citizen
특별한 대우를 받는 함수
다음과 같은 조건을 만족하는 객체를 일급객체라고 한다
- 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다
- 변수나 자료구조(객체, 배열 등)에 저장할 수 있다
- 함수의 매개변수에 전달될 수 있다
- 함수의 반환값으로 사용될 수 있다
자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체이고 다음과 같은 특징을 갖는다.
- 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미
- 객체는 값이므로 함수는 값과 동일하게 취급될 수 있다
- 따라서 자바스크립트에서 함수는 값을 사용할 수 있는 곳 (변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문)이라면 어디서든지 리터럴로 정의할 수 있다.
- 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있다.
- 이는 함수를 데이터(string, number, boolean, array, object)를 다루듯이 다룰 수 있다는 것을 의미.
- 또한 런타임에 함수 자체로 평가된다.
- 일급객체로서 함수가 가지는 가장 큰 특징은, 일반 객체와 같이 함수의 매개변수에 전달할 수 있으며,
- 함수의 반환값으로 사용할 수 있다는 것이다
- 이는 함수형 프로그래밍을 가능케 하는 자바스크립트의 강점 중 하나이다
- 함수는 객체지만 일반 객체와는 차이가 있다. 일반 객체는 호출할 수 없으나 함수 객체는 호출할 수 있으며,
- 함수 객체는 일반 객체에는 없는 함수 고유의 프로퍼티를 소유한다.
변수에 함수를 할당하는 경우
/* * 변수 square에 함수를 할당하는 함수 표현식.
* 자바스크립트에서 함수는 일급 객체이기 때문에 변수에 저장할 수 있다.
*
* 함수 표현식은 할당 전에 사용할 수 없다.
* square(7); // --> ReferenceError: Can't find variable: square
*/ const square = function (num) { return num * num; };
// square에는 함수가 저장되어 있으므로 (일급 객체), 함수 호출 연산자 '()'를 사용할 수 있다.
output = square(7); console.log(output); // --> 49
+)
함수 표현식은 변수에 할당한 다음 사용할 수 있다.
함수 표현식(function expression)은 함수 선언식(function declaration)과 다르게 호이스팅(Hoisting)이 적용되지 않는다.
- 호이스팅은 선언된 위치에 관계없이 어디서든 함수를 사용할 수 있도록 하는 것.
- 코드가 실행되는 과정에서 함수 선언부를 코드의 최상단으로 끌어올리는 것처럼 보이게 한다.
.
'텃밭 2 : FE > JavaScript' 카테고리의 다른 글
[JS] 내장 고차함수 : filter, map, reduce (0) | 2022.02.16 |
---|---|
[JS] 콜백함수와 고차함수 (0) | 2022.02.14 |
[JS] 메모리 구조적으로 살펴본 ==, === 의 차이 (0) | 2022.02.03 |
[JS] var, let, const 로 선언한 변수는 실제로 어디에 저장될까 (0) | 2022.01.29 |
[JS] 메모리 힙이란? (자료구조 힙과 다른 것) (0) | 2022.01.23 |
Comments