롸?
일급 함수 본문
프로그래밍 언어에서 어떤 대상이 일급이라는 것은 그 대상이 다음 세 가지 조건을 만족한다는 것을 의미한다.
함수 호출의 인자로 사용될 수 있다.
함수의 결괏값으로 사용될 수 있다.
대입 연산을 통해서 변수가 가리키는 대상으로 지정될 수 있다.
간단히 말하자면, 함수를 변수로 저장할 수도 있고, 다른 함수에 파라미터로 전달 하고 반환 받을 수도 있으면 일급 함수에 속한다.
자바스크립트의 함수는 대표적인 일급 함수 중 하나에 속한다.
예제1) 변수에 함수 할당
const foo = function() {
console.log("foobar");
}
// 변수를 사용해 호출
foo();
익명함수를 변수에 할당한 다음, 그 변수를 사용해 끝에 괄호를 추가하여 함수를 호출함.
함수가 이름을 가지고 있더라도 변수에 할당하여 변수 이름으로 호출 할 수 있다.
예제2) 함수를 인자로 전달
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// `sayHello`를 `greeting` 함수에 인자로 전달
greeting(sayHello, "JavaScript!");
sayHello() 함수를 greeting() 함수의 인자로 전달함.
다른 함수에 인자로 전달된 함수를 콜백함수 라고 한다. 여기서 sayHello()가 콜백함수
예제3) 함수 반환
함수를 반환하는 함수를 고차함수라고 한다.
3-1) 함수 반환 : 변수 사용
const sayHello = function() {
return function() {
console.log("Hello!");
}
}
const myFunc = sayHello();
myFunc();
sayHello() 함수를 호출 시, Hello!를 출력하는 익명함수를 반환함. 이를 myFunc 변수에 할당하여 호출.
만약에 sayHello()를 직접 호출하면 반환된 함수를 호출하지 않고 함수 자체를 반환함. 그러므로 반환된 함수를 다른 변수에 저장해서 사용해야함.
3-2) 함수 반환 : 이중 괄호 사용
function sayHello() {
return function() {
console.log("Hello!");
}
}
sayHello()();
참고
1. 위키피디아 일급 객체
2. https://developer.mozilla.org/ko/docs/Glossary/First-class_Function
'WEB > JavaScript & jQuery' 카테고리의 다른 글
자바스크립트 화살표 함수 (0) | 2020.03.12 |
---|---|
jQuery (0) | 2020.03.12 |
자바스크립트 이벤트 핸들링 (0) | 2020.03.11 |
자바스크립트 스코프 호이스팅 (0) | 2020.03.10 |
함수형 프로그래밍 (0) | 2020.03.02 |
Comments