[JS]함수의 다양한 정의 방법

2024. 11. 25. 22:01·Language/JavaScript

1. 기본 함수 선언

function 키워드를 사용하여 함수 이름과 함께 정의하는 방법이다. 이 방식은 호이스팅(hoisting)되어, 선언 이전에 호출할 수 있다.
호이스팅(hoisting): 변수나 함수의 선언부가 해당 스코프의 최상단으로 끌어올려지는 것처럼 동작하는 현상이다. 함수 선언문은 완전히 호이스팅되므로, 호출 위치와 상관없이 사용할 수 있다.

greet(); //출력: (≧∇≦)ノ
//선언 이전에 호출되었지만 호이스팅 덕분에 정상적으로 동작

function greet() {
    console.log("(≧∇≦)ノ");
}

greet(); //출력: (≧∇≦)ノ

2. 변수에 함수 할당

함수를 변수에 할당하여 정의하는 방식이다. 이 방법은 익명 함수와 이름 있는 함수로 나뉜다. 함수 표현식은 호이스팅되지 않으므로, 선언 이후에만 호출할 수 있다.
2-1. 익명 함수
이름 없이 정의된 함수를 변수에 할당하는 방식이다.

//함수 이름 없이 정의(익명 함수)
const greet = function () {
    console.log("(≧∇≦)ノ");
};
greet(); //출력: (≧∇≦)ノ

2-2. 이름 있는 함수
이름이 있는 함수를 변수에 할당하는 방식이다. 함수의 이름은 함수 내부에서만 호출할 수 있다.

const sad = function sadFunction() {
    console.log("(┬┬﹏┬┬)");
};
sad(); //출력: (┬┬﹏┬┬)

sadFunction(); //오류: 외부에서 호출 불가능

3. 익명 함수 활용

3-1. 즉시 실행 함수
정의와 동시에 실행되는 함수이다. 일회성 작업이나 캡슐화가 필요한 경우에 사용된다.

(function () {
    console.log("(┬┬﹏┬┬)");
})(); //출력: (┬┬﹏┬┬)

3-2. 콜백 함수
다른 함수의 인자로 전달되어 특정 작업이 완료된 후 실행되는 함수이다.

setTimeout(function () {
    console.log("2초 후 실행됩니다!");
}, 2000); //2초 후 출력: 2초 후 실행됩니다!
document.getElementById("btn").addEventListener("click", function () {
    console.log("버튼이 클릭되었습니다!");
});

4. 화살표 함수

//매개변수가 하나일 때 괄호 생략 가능
const greet = name => {
    console.log(`안녕, ${name}!`);
};

//매개변수가 여러 개일 때 괄호 필수
const calculate = (a, b) => {
    return a + b; 
};

//매개변수가 없을 때 괄호 필수
const face = () => { 
    console.log("(•_•)"); 
};

//실행문이 하나일 때 중괄호 생략 가능
const face = () => console.log("(•_•)"); 

//실행문이 하나인데 그게 return 문일 때 중괄호 {}와 return 키워드를 모두 생략 가능
const calculate = (a, b) => a * b;

//실행문이 여러 개일 때 중괄호 필수
const calculate = (a, b) => {
    const sum = a + b; 
    const product = a * b; 
    console.log(`합계: ${sum}, 곱: ${product}`); 
};

//실행문이 여러 개이고 특정 값을 return 할 때 중괄호 필수
const calculate = (a, b) => { 
    const sum = a + b; 
    console.log(`합계: ${sum}`); 
    return sum; 
};

'Language > JavaScript' 카테고리의 다른 글

[JS]객체(Object) 정의, 호출  (0) 2024.12.24
[JS]배열 관련 함수  (2) 2024.11.25
[JS]prompt, console.log, alert, document.write  (1) 2024.11.10
[JS]true==2는 false지만, if(2) {}는 실행되는 이유  (0) 2024.11.09
[JS]== vs ===  (2) 2024.11.09
'Language/JavaScript' 카테고리의 다른 글
  • [JS]객체(Object) 정의, 호출
  • [JS]배열 관련 함수
  • [JS]prompt, console.log, alert, document.write
  • [JS]true==2는 false지만, if(2) {}는 실행되는 이유
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JS]함수의 다양한 정의 방법
상단으로

티스토리툴바