[JS] 일급 함수

또띠·2023년 7월 26일
0

JavaScript

목록 보기
8/23
post-thumbnail
post-custom-banner

일급 함수 ?

프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다. - 출처 MDN

1. 변수에 함수를 할당 할 수 있다.

const hello = function () {
    console.log('dada')
}

함수가 값으로도 취급된다. 하지만 이는 자바스크립트에서만 가능하다는 것...!
일반적인 함수 실행 방법처럼 hello()를 사용하여 함수를 실행시킬 수 있다.


2. 함수를 인자로 다른 함수에 전달 할 수 있다.

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하는 함수

뜻은 이해가 가지만 확실히 용어가 어려운 느낌이 든다. 허허


3. 함수를 반환 할 수 있다.

function cd (num) {
    return function () {
        return x + num;
    }
}

멋지다. 함수 안에 return funtion 이라니...!


4. 객체 안의 함수

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

profile
✨ 𝑬𝒗𝒆𝒓𝒚𝒕𝒉𝒊𝒏𝒈 𝒄𝒐𝒎𝒆𝒔 𝒕𝒐 𝒉𝒊𝒎 𝒘𝒉𝒐 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 𝒘𝒉𝒊𝒍𝒆 𝒉𝒆 𝒘𝒂𝒊𝒕𝒔. ✨
post-custom-banner

0개의 댓글