반응형
프로그래밍 언어가 함수를 다른 변수들처럼 취급할 수 있을 때, 이 언어를 일급 함수를 가진 언어라고 할 수 있다.
즉, 함수가 다른 변수처럼 사용될 때의 함수를 일급 함수라고 부른다.
변수에 함수 할당
const foo = () => { console.log("foobar"); }
// 변수를 통해 호출
foo();
익명 함수를 변수에 할당할 수 있고, 변수를 이용해 함수를 호출할 수 있다.
익명 함수가 아니어도 할당과 호출이 가능하다. 함수에 이름을 주는 것은 디버딩에 도움이 되지만 함수 호출에 영향을 주지는 않는다.
함수를 인자로 전달
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// `sayHello` 함수를 `gretting` 함수의 인자로 전달
gretting(sayHello, "JavaScript!");
sayHello 함수를 greeting 함수의 인자로 전달한다. 이는 함수를 값으로 취급함을 의미한다.
다른 함수한테 인자로 전달한 함수를 콜백 함수(Callback Function)라고 부른다.
함수를 반환
function sayHello() {
return function() {
console.log("Hello!");
}
}
함수는 다른 함수를 반환할 수 있다. - 함수를 값으로 취급하기 때문이다.
함수를 반환하는 함수를 고차 함수(Higher-Order Function)라고 부른다.
sayHello 함수를 호출하면 익명 함수를 반환한다. 이 함수를 사용할 두 가지 선택지가 있다.
1 - 변수에 할당하여 사용
function sayHello() {
return function() {
console.log("Hello!");
}
}
const myFunc = sayHello();
myFunc();
2 - 두 번의 함수 호출 사용
function sayHello() {
return function() {
console.log("Hello!");
}
}
sayHello()();
반응형
'과거' 카테고리의 다른 글
웹 기초 (0) | 2021.09.07 |
---|---|
성능 최적화 (0) | 2021.09.06 |
[JS] Object property order (0) | 2021.07.13 |
[JS] typeof null, null instanceof Object (0) | 2021.07.13 |
details marker 제거 (0) | 2021.07.13 |