함수란?

  • 코드의 집합을 나타내는 자료형
  • 반복되는 코드를 정의해 놓고 필요할 때마다 호출하므로 반복 작업을 피할 수 있음
  • 기능별로 나눠 함수를 작성해 놓으면 유지보수가 쉬워짐

🌟함수도 값이다🌟

함수 선언식 (Function Declarations)

  • 호이스팅이 일어나지만 가독성은 좋다.
// 함수 선언
function 함수이름(매개변수) {
    // 함수 호출시 실행될 코드
}

// 함수 호출
함수이름(인자)
// 함수 선언
function showMessage() {
  console.log("Hello");
}

// 함수 호출
showMessage();

함수 선언식으로 함수 선언 후 호출

// 함수의 호이스팅
showMessage(); // 함수 선언전에 호출

// 함수 선언
function showMessage() {
  console.log("Hello");
}

함수 선언전 호출

익명 함수 (Anonymous Function)

  • 이름이 붙어 있지 않는(함수명이 없는) 함수
  • 호이스팅이 일어나지 않는다.
  • 선언 후 실행하지 않으면 에러가 난다.
  • 함수 표현식에서 사용한다.
// 익명 함수 선언
function (매개변수) {
    // 함수 호출 시 실행될 코드
}
// 익명 함수 선언만 한 경우
function (name) {
  console.log(name + "님 어서오세요!");
}

// 에러 메시지
Uncaught SyntaxError: Function statements require a function name

익명 함수를 선언만 할 경우

// 익명 함수 즉시 실행
(function (name) {
  console.log(name + "님 어서오세요!");
})("CloudCoke");

익명 함수를 즉시 실행한 경우

함수 표현식 (Function Expressions)

  • 호이스팅이 일어나지 않는다.
  • 가독성이 조금 떨어진다.
// 함수 선언과 동시에 변수 선언 및 변수 초기화
const 변수이름 = function (매개변수) {
    // 함수 호출시 실행될 코드
}

// 함수 호출
변수이름(인자)
const showMessage = function () {
  console.log("Hi");
};

// 함수도 값이다
console.log(showMessage);

// 함수 호출
showMessage();

함수 표현식으로 함수 선언 후 호출

화살표 함수 (Arrow Function)

  • 함수 표현식을 조금 더 간결한 문법으로 만드는 방법이다.
  • ES6에서 추가된 문법
// 기본적인 화살표 함수 선언
const 변수 이름 = (매개 변수) => {
    // 함수 호출 시 실행될 코드
}

// 함수 호출
변수 이름(인자)

화살표 함수 문법

// 함수 표현식으로 함수 선언시
const sum = function (a, b) {
  return a + b;
};

console.log(sum(1, 2));

함수 표현식으로 함수 선언 후 호출

// function 키워드 생략
const sum = (a, b) => {
    return a + b;
};

console.log(sum(1,2))

화살표 함수로 함수 선언 후 호출

// 함수의 유일한 문장이 return일 때 return 및 중괄호({}) 생략
const sum = (a, b) => a + b

console.log(sum(1,2))

화살표 함수 return 생략

// 만약 매개 변수가 1개일 경우에는 ()도 생략 가능(선택 사항)
// 매개 변수가 없는 함수는 () 필요!!!

// 함수 표현식
const sum = function (a) {
    return a + 1;
};

console.log(sum(1))

// 화살표 함수
const sumArrow = a => a + 1

console.log(sumArrow(1))

화살표 함수 () 생략

참고

'Javascript' 카테고리의 다른 글

[Javascript] 피보나치 수열 - 알고리즘  (0) 2022.11.03
[Javascript] 형 변환  (0) 2022.11.03
[Javascript] 함수  (0) 2022.11.01
[Javascript] 변수와 상수  (0) 2022.10.31
[Javascript] 연산자  (2) 2022.10.28