4장: 함수

함수는 JavaScript에서 코드를 재사용하고 구조화하는 데 중요한 역할을 합니다. 이 장에서는 함수의 선언과 호출, 매개변수와 반환값, 함수 표현식과 화살표 함수에 대해 알아보겠습니다.


#### 함수 선언과 호출


함수는 특정 작업을 수행하는 코드 블록입니다. 함수는 `function` 키워드로 선언하며, 이름을 부여할 수 있습니다. 함수를 호출하여 실행할 수 있습니다.


function greet() {

    console.log("Hello, World!");

}


greet(); // Hello, World!


위 예제에서 `greet` 함수는 "Hello, World!"를 출력합니다. 함수는 선언된 후 호출될 때 실행됩니다.


#### 매개변수와 반환값


함수는 매개변수를 통해 외부로부터 값을 받아 처리할 수 있으며, 결과를 반환할 수 있습니다. 매개변수는 함수 선언부의 괄호 안에 정의하며, 반환값은 `return` 키워드를 사용합니다.


function add(a, b) {

    return a + b;

}


let result = add(3, 5); // 8

console.log(result); // 8


위 예제에서 `add` 함수는 두 개의 매개변수를 받아 그 합을 반환합니다. 함수 호출 시 `3`과 `5`를 인수로 전달하여 결과를 `result` 변수에 저장합니다.


#### 함수 표현식과 화살표 함수


함수 표현식은 함수를 변수에 할당하는 방법입니다. 이는 익명 함수(이름이 없는 함수)를 사용하거나, 이름이 있는 함수를 사용할 수 있습니다.


let multiply = function(a, b) {

    return a * b;

};


console.log(multiply(4, 5)); // 20


위 예제에서 `multiply` 변수에 익명 함수를 할당하였습니다. 함수 표현식은 함수 선언과 달리 코드 실행 중에 정의됩니다.


ES6에서는 화살표 함수(Arrow Function)라는 새로운 함수 선언 방식이 도입되었습니다. 이는 더 간결한 문법을 제공하며, `function` 키워드 대신 `=>`를 사용합니다.


let subtract = (a, b) => {

    return a - b;

};


console.log(subtract(10, 4)); // 6


위 예제에서 화살표 함수는 `subtract` 변수에 할당되며, `10`과 `4`를 인수로 받아 그 차를 반환합니다. 화살표 함수는 함수 몸체가 단일 표현식일 경우 더 간단히 작성할 수 있습니다.


let divide = (a, b) => a / b;

console.log(divide(20, 4)); // 5


화살표 함수는 `this` 키워드의 바인딩이 함수 선언과 다릅니다. 일반 함수는 자신이 호출된 문맥의 `this`를 가리키지만, 화살표 함수는 자신이 정의된 문맥의 `this`를 가리킵니다.


#### 즉시 실행 함수 표현식 (IIFE)


즉시 실행 함수 표현식(IIFE, Immediately Invoked Function Expression)은 선언되자마자 실행되는 함수입니다. 이를 통해 전역 네임스페이스를 오염시키지 않고 코드를 실행할 수 있습니다.


(function() {

    console.log("IIFE 실행됨");

})();


위 예제에서 익명 함수가 즉시 실행되어 "IIFE 실행됨"이 출력됩니다.


#### 함수의 기본 매개변수


ES6부터 함수 매개변수에 기본값을 설정할 수 있습니다. 이를 통해 함수 호출 시 인수가 전달되지 않더라도 기본값을 사용할 수 있습니다.


function greet(name = "Guest") {

    console.log(`Hello, ${name}!`);

}


greet(); // Hello, Guest!

greet("Alice"); // Hello, Alice!


위 예제에서 `name` 매개변수의 기본값을 "Guest"로 설정하였으며, 함수 호출 시 인수가 없으면 기본값이 사용됩니다.


#### 재귀 함수


재귀 함수는 함수 내부에서 자기 자신을 호출하는 함수입니다. 이를 통해 반복적인 작업을 간단하게 표현할 수 있습니다.


function factorial(n) {

    if (n === 0) {

        return 1;

    }

    return n * factorial(n - 1);

}


console.log(factorial(5)); // 120


위 예제에서 `factorial` 함수는 재귀를 사용하여 주어진 숫자의 팩토리얼을 계산합니다. 종료 조건이 없으면 무한 루프에 빠질 수 있으므로 주의가 필요합니다.


이 장에서는 JavaScript의 함수에 대해 배웠습니다. 함수는 코드의 재사용성과 가독성을 높이며, 모듈화된 프로그래밍을 가능하게 합니다. 다음 장에서는 객체와 배열에 대해 알아보겠습니다.

댓글