-
Notifications
You must be signed in to change notification settings - Fork 8k
/
index.md
69 lines (51 loc) · 2.39 KB
/
index.md
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
---
title: 일급 함수
slug: Glossary/First-class_Function
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---
{{GlossarySidebar}}
프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 **일급 함수**를 가진다고 합니다.
예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다.
## 예제
### 변수에 함수 할당
```js
const foo = () => {
console.log("foobar");
};
foo(); // 변수를 사용해 호출
// foobar
```
{{glossary("Variable", "변수")}}에 '익명함수'를 할당한 다음, 끝에 괄호 `()`를 추가하면서 함수를 호출할 해당 변수를 사용합니다.
> **참고:** 함수가 이름을 가지고 있더라도, 변수 이름을 사용하여 함수를 호출할 수 있습니다. 함수에 이름을 지정하는 것은 코드를 디버깅할 때 도움이 됩니다. 하지만 함수를 호출하는 방식에는 영향을 미치지 않을 것입니다.
### 함수에 인자로 전달
```js
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// `sayHello`를 전달인자로 `greeting` 함수에 전달
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!
```
`sayHello()` 함수를 `greeting()` 함수에 전달인자로 전달하는데, 이것은 함수를 값으로서 어떻게 다루는지 설명합니다.
> **참고:** 다른 함수에 전달인자로 전달하는 함수를 {{glossary("Callback function", "콜백 함수")}}라고 합니다. `sayHello()`는 콜백 함수입니다.
### 함수 반환
```js
function sayHello() {
return () => {
console.log("Hello!");
};
}
```
이번 예제에서, 다른 함수로부터 함수를 반환합니다.
JavaScript에서 함수들은 값들로서 다루어질 수 있기 때문에 함수를 반환할 수 있습니다.
> **참고:** 함수를 반환하거나 다른 함수들을 전달인자로서 사용하는 함수를 "고차 함수"라고 합니다.
## 같이 보기
- 위키피디아의 [일급 함수](https://en.wikipedia.org/wiki/First-class_function)
- [MDN Web Docs 용어 사전](/ko/docs/Glossary)
- {{glossary("Callback function", "콜백 함수")}}
- {{glossary("Function", "함수")}}
- {{glossary("Variable", "변수")}}