프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다. - 출처 MDN
const hello = function () {
console.log('dada')
}
함수가 값으로도 취급된다. 하지만 이는 자바스크립트에서만 가능하다는 것...!
일반적인 함수 실행 방법처럼 hello()를 사용하여 함수를 실행시킬 수 있다.
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name); // helloMessage라는 인자를 console.log 안에서는 함수에 전달인자로 사용
}
greeting(sayHello, "JavaScript!");
// sayHello() 함수를 인자로 사용해서 sayHello() 함수 안의 return 내용을 불러온다.
// Hello, Javascript!
이 내용은 사실 좀 이해가 바로 가지 않아서 추가적으로 복습 하면서 손에 익혀볼 예정이다 😭
우선은 MDN 공식 문서 내의 예시로 이해해 보려고 노력해 보았다.
여기서는 2가지 함수 종류에 대해 설명을 들었다.
🔅 콜백함수 : 매개변수로써 쓰이는 함수
🔅 고차함수 : 함수를 인자로 받거나 return하는 함수
뜻은 이해가 가지만 확실히 용어가 어려운 느낌이 든다. 허허
function cd (num) {
return function () {
return x + num;
}
}
멋지다. 함수 안에 return funtion 이라니...!
const person = {
name : "molrang",
age : 27,
isMarried : true,
sayHello : function () {
console.log("Hello, my name is " + this.name);
// 템플릿 리터럴로 변경! console.log(`Hello, my name is ${this.name}`);
// Hello, my name is molrang
}
}
객체 안에서 키 값으로 함수를 넣을 수 있다는 사실!
참고로 덧붙이자면, name을 접근할때 this를 사용해서 접근했는데
만약 화살표 함수로 바꿔서 this를 사용하려고 하면 undefined 로 나타난다ㅠㅠ
그 이유는 화살표 함수는 this를 바인딩 하지 않는다고...!
실수하지 않게 조심해야겠다.
📖 일급 함수 - MDN
https://developer.mozilla.org/ko/docs/Glossary/First-class_Function