html, css, JavaScript

자바스크립트 함수 유형 정리

sognociel 2022. 11. 3. 14:42
  • 함수 선언식
  • 함수 표현식
  • 즉시 실행 함수
  • 화살표 함수
  • 콜백 함수

 

함수 선언식

함수의 이름을 지정해서 사용하는 방법. 함수 호이스팅이 가능하다.

function printHello (hello) {
  return hello;
}

console.log(printHello("안녕"))
<< 안녕

 

 

함수 표현식

함수의 이름 없이 변수에 담아서 사용하는 방법. 단, 함수를 사용하기 전에 위쪽에서 먼저 선언되어야 사용이 가능하다. 호이스팅이 불가능하다.

let hello = function () {
  return "안녕";
}

const helloText = hello(); // 변수에 담았지만 사용은 함수처럼
console.log(helloText);
<< "안녕"

// 변수에 담지 않고 console.log(hello()); 로 사용도 가능하다

 

 

즉시 실행 함수

일반적인 함수(필요할 때마다 호출해서 실행)가 아니라 한 번만 실행하는 함수의 경우 사용한다.

// 매개변수와 인수는 필요할 때만 넣어주면 된다. 없어도 문제x

(function(매개변수) {
  let userName = prompt(`이름을 입력하세요.`);
  document.write(`안녕하세요 ${userName}님!`);
}(인수:매개변수로 들어가는 것));

 

 

화살표 함수

함수 표현식보다 단순하고 간결하게 사용이 가능하다.

let hello = () => { return "안녕"; }
let hello = () => "안녕";
// 함수의 이름을 지정하지 않아도 되며 출력 결과가 간단할 경우 중괄호를 쓰지 않아도 된다.
// 중괄호를 쓰지 않는다면 return도 작성 x

console.log(hello());
<< "안녕"

 

 

콜백 함수

다른 코드의 매개변수로 함수를 넘겨준 것. 다른 코드의 인자로서 넘겨주는 실행 가능한 코드를 말한다.

 

콜백 함수를 쓰기 전, 아래의 코드와 같이 작성을 하면 function dance()는 사용되지도 못한다.

function checkMood(mood) {
  if (mood === "good") {
    sing();
  } else {
    cry();
  }
}

function cry() {
  console.log("ACTION :: CRY");
}

function sing() {
  console.log("ACTION :: SING");
}

function dance() {
  console.log("ACTION :: DANCE");
}

checkMood("cry");

 

checkMood의 파라미터로 mood말고도 기분이 좋을 때, 기분이 나쁠 때의 파라미터를 추가해 준다.

그리고 함수의 인자를 (mood, 기분 좋을 때 실행할 함수, 기분 나쁠 때 실행할 함수)로 하여 checkMood를 불러오게 되는데, 밑 코드 checkMood 인자의 sing과 cry가 콜백 함수.

인자로 들어가는 함수는 그때그때 상황에 따라 바꿔주면 되고, 이렇게 하면 위 코드에서는 쉽게 사용하지 못했던 dance()를 유동적으로 사용할 수 있다.

function checkMood(mood, goodCallback, badCallback) {
  if (mood === "good") {
    goodCallback();
  } else {
    badCallback();
  }
}

function cry() {
  console.log("ACTION :: CRY");
}

function sing() {
  console.log("ACTION :: SING");
}

function dance() {
  console.log("ACTION :: DANCE");
}

checkMood("bored", sing, cry);