diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
commit | da78a9e329e272dedb2400b79a3bdeebff387d47 (patch) | |
tree | e6ef8aa7c43556f55ddfe031a01cf0a8fa271bfe /files/ko/glossary/first-class_function | |
parent | 1109132f09d75da9a28b649c7677bb6ce07c40c0 (diff) | |
download | translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.gz translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.bz2 translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.zip |
initial commit
Diffstat (limited to 'files/ko/glossary/first-class_function')
-rw-r--r-- | files/ko/glossary/first-class_function/index.html | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/files/ko/glossary/first-class_function/index.html b/files/ko/glossary/first-class_function/index.html new file mode 100644 index 0000000000..682e94731c --- /dev/null +++ b/files/ko/glossary/first-class_function/index.html @@ -0,0 +1,105 @@ +--- +title: 일급 함수 +slug: Glossary/First-class_Function +tags: + - 1급객체 + - 1급함수 + - CodingScripting + - Glossary + - JavaScript + - 일급객체 +translation_of: Glossary/First-class_Function +--- +<p>함수를 다른 변수와 동일하게 다루는 언어는 <strong>일급 함수</strong>를 가졌다고 표현합니다. 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 매개변수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있습니다.</p> + +<h2 id="예제_변수에_함수_할당">예제 | 변수에 함수 할당</h2> + +<h3 id="JavaScript">JavaScript</h3> + +<pre class="brush: js">const foo = function() { + console.log("foobar"); +} +// 변수를 사용해 호출 +foo(); +</pre> + +<p>익명함수를 변수에 할당한 다음, 그 변수를 사용하여 끝에 괄호 <code>()</code>를 추가하여 함수를 호출했습니다.</p> + +<div class="note"> +<p><strong>함수가 이름을 가지고 있더라도</strong> 할당한 변수 이름을 사용해 함수를 호출할 수 있습니다. 이름을 지정하면 코드를 디버깅할 때 유용합니다. 하지만 호출하는 방식에는 영향을 미치지 않습니다.</p> +</div> + +<h2 id="예제_함수를_인자로_전달">예제 | 함수를 인자로 전달</h2> + +<h3 id="JavaScript_2">JavaScript</h3> + +<pre class="brush: js">function sayHello() { + return "Hello, "; +} +function greeting(helloMessage, name) { + console.log(helloMessage() + name); +} +// `sayHello`를 `greeting` 함수에 인자로 전달 +greeting(sayHello, "JavaScript!"); +</pre> + +<p><code>sayHello()</code> 함수를 <code>greeting()</code> 함수의 인자로 전달했습니다. 이것이 함수를 어떻게 변수처럼 다루는지 보여주는 예시입니다.</p> + +<div class="note"> +<p>다른 함수에 인자로 전달된 함수를 {{glossary("Callback function", "콜백 함수")}}라고 합니다. <em><code>sayHello</code>는 콜백 함수입니다.</em></p> +</div> + +<h2 id="예제_함수_반환">예제 | 함수 반환</h2> + +<h3 id="JavaScript_3">JavaScript</h3> + +<pre class="brush: js">function sayHello() { + return function() { + console.log("Hello!"); + } +} +</pre> + +<p>함수가 함수를 반환하는 예제입니다. <em>JavaScript에서는 함수를 변수처럼 취급하기 때문에 함수를 반환할 수 있습니다.</em></p> + +<div class="note"> +<p>함수를 반환하는 함수를 <strong>고차 함수</strong>라고 부릅니다.</p> +</div> + +<p>다시 예제로 돌아갑시다. <code>sayHello</code> 함수를 호출했을 때 반환하는 익명함수를 호출하려면 두 가지 방법이 있습니다.</p> + +<h3 id="1-_변수_사용">1- 변수 사용</h3> + +<pre class="brush: js">const sayHello = function() { + return function() { + console.log("Hello!"); + } +} +const myFunc = sayHello(); +myFunc();</pre> + +<p>이렇게 하면 <code>Hello!</code> 메시지가 출력됩니다.</p> + +<div class="note"> +<p>만약에 <code>sayHello</code> 함수를 직접 호출하면, <strong>반환된 함수를 호출하지않고</strong> 함수 자체를 반환합니다. 그러므로 반환된 함수를 다른 변수에 저장하여 사용해야합니다.</p> +</div> + +<h3 id="2-_이중_괄호_사용">2- 이중 괄호 사용</h3> + +<pre class="brush: js">function sayHello() { + return function() { + console.log("Hello!"); + } +} +sayHello()(); +</pre> + +<p>이중 괄호 <code>()()</code>를 사용해 반환한 함수도 호출하고 있습니다.</p> + +<h2 id="더_배우기">더 배우기</h2> + +<h3 id="일반_지식">일반 지식</h3> + +<ul> + <li>위키백과 {{Interwiki("wikipedia", "일급 객체")}}</li> +</ul> |