본문 바로가기
방구석코딩/자바스크립트

자바 스크립트 일급 함수 및 사용 예시

by 석세상 2023. 4. 15.
반응형

JavaScript는 많은 강력한 기능 중 하나는 일급 함수입니다. 일급 함수는 함수가 JavaScript의 다른 변수처럼 처리될 수 있음을 의미합니다.

자바 스크립트 일급함수 정의, 사용예시

함수가 다른 함수에 인수로 전달되고, 함수에서 반환되며, 변수에 할당될 수도 있음을 의미합니다. JavaScript의 일급 함수와 프로그래밍에서 함수를 사용하는 방법을 살펴보도록 하겠습니다.

 

 

일급 함수란

JavaScript에서 함수는 일급 시민으로 취급됩니다. 즉, 변수에 할당하고, 다른 함수에 인수로 전달하고, 함수에서 값으로 반환할 수 있습니다. 이것이 "일급 기능"이라는 용어의 의미입니다.

 

간단한 예를 살펴보겠습니다.

function sayHello(name) {
console.log("Hello " + name);
}

var greeting = sayHello;
greeting("John");

이 예제에서는 단일 매개변수 name을 사용하고 인사말을 콘솔에 기록하는 sayHello라는 함수를 정의합니다.

 

그런 다음 sayHello 함수를 greeting이라는 변수에 할당합니다. 마지막으로 인사말 함수를 호출하여 문자열 "John"을 인수로 전달합니다.

 

이 코드의 출력은 greeting 변수가 이제 sayHello 함수에 대한 참조를 보유하고 있기 때문에 "Hello John"이 됩니다. 다른 함수와 마찬가지로 greeting 변수를 호출할 수 있습니다.

 

 

함수를 인수로 전달

일급 함수의 가장 강력한 측면 중 하나는 함수를 다른 함수의 인수로 전달하는 기능입니다. 이는 배열의 각 요소에 특정 함수를 적용하려는 경우와 같은 다양한 시나리오에서 유용할 수 있습니다.

function applyFunctionToElements(arr, func) {
for (var i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
return arr;
}

function double(n) {
return n * 2;
}

var numbers = [1, 2, 3, 4, 5];
var doubledNumbers = applyFunctionToElements(numbers, double);
console.log(doubledNumbers);

이 예에서는 배열과 함수라는 두 개의 인수를 사용하는 applyFunctionToElements라는 함수를 정의합니다.

 

함수는 배열을 반복하고 각 요소에 함수를 적용합니다. 이 경우에는 double 함수를 두 번째 인수로 전달합니다. double 함수는 단일 인수를 사용하고 해당 인수에 2를 곱한 값을 반환합니다.

 

이 코드의 출력은 numbers 배열의 각 요소에 double 함수를 적용한 결과인 [2, 4, 6, 8, 10]입니다.

 

함수에서 함수 반환

함수는 다른 함수를 반환할 수도 있습니다. 이는 특정 조건에 따라 특정 동작이 있는 함수를 반환하려는 상황에서 유용할 수 있습니다.

function createGreeter(name) {
return function() {
console.log("Hello " + name);
}
}

var johnGreeter = createGreeter("John");
var janeGreeter = createGreeter("Jane");

johnGreeter();
janeGreeter();

이 예제에서는 단일 인수 name을 사용하는 createGreeter라는 함수를 정의합니다. 이 함수는 name 인수를 사용하여 콘솔에 인사말을 기록하는 또 다른 함수를 반환합니다.

728x90

그런 다음 createGreeter 함수를 다른 이름으로 호출한 결과가 할당되는 johnGreeter 및 janeGreeter라는 두 개의 새 변수를 만듭니다.

 

이 코드의 출력은 johnGreeter 및 `janeGreeter를 호출하기 때문에 "Hello John" 다음에 "Hello Jane"이 됩니다.

728x90
반응형

댓글