람다표현

Songss·2025년 1월 9일

개발스킬

목록 보기
5/9

익명 메서드

  • 메소드를 미리 정의하지 않고 사용할 때 정의한다.
  • 익명 메소드를 사용하면 코드가 간결해진다.
  • 익명 메소드는 별도의 메소드를 만들지 않으므로 코딩 오버헤드를 줄 일 수 있다.
  • 익명 메소드는 내용 자체가 복잡하면 안된다.
  • 익명 메소드는 람다식에서 사용된다.

*람다식(Lambda Expression)은 프로그래밍에서 간결하고 유연하게 함수를 표현**하기 위해 도입되었습니다. 람다식은 익명 함수(Anonymous Function)를 간단히 표현한 것으로, 기존 함수 선언 방식보다 짧고 직관적인 코드 작성을 가능하게 합니다.

람다식이 도입된 이유는 다음과 같습니다:


1. 간결한 코드 작성

  • 기존의 함수 선언 방식은 불필요한 코드와 반복이 많을 수 있습니다.
  • 람다식은 짧고 직관적으로 함수의 동작을 표현할 수 있게 합니다.

예시: JavaScript에서 배열 요소를 제곱하는 코드

기존 함수 선언:

const numbers = [1, 2, 3, 4, 5];
const squares = numbers.map(function(n) {
    return n * n;
});
console.log(squares); // [1, 4, 9, 16, 25]

람다식 사용:

const squares = numbers.map((n) => n * n);
console.log(squares); // [1, 4, 9, 16, 25]
  • 람다식을 사용하면 코드가 훨씬 더 간결해지고 가독성이 좋아집니다.

2. 함수형 프로그래밍 지원

  • 함수형 프로그래밍 패러다임에서는 함수를 1급 시민(First-Class Citizen)으로 다룹니다.
  • 람다식은 함수를 매개변수로 전달하거나 반환값으로 사용할 때 유용합니다.

예시: 함수 전달

기존 방식:

function isEven(n) {
    return n % 2 === 0;
}

const evens = [1, 2, 3, 4, 5].filter(isEven);
console.log(evens); // [2, 4]

람다식 사용:

const evens = [1, 2, 3, 4, 5].filter((n) => n % 2 === 0);
console.log(evens); // [2, 4]
  • 람다식을 사용하면 별도의 함수를 정의하지 않고, 필요한 곳에서 간단히 함수 동작을 구현할 수 있습니다.

3. 익명 함수의 편리한 사용

  • 람다식은 익명 함수를 정의할 수 있습니다. 함수의 이름을 정의할 필요가 없는 경우 유용합니다.
  • 특정 작업에만 필요한 함수를 정의하고 사용 후 버릴 수 있습니다.

예시:

setTimeout(() => {
    console.log("1초 후 실행됩니다.");
}, 1000);
  • 여기서 람다식을 사용하지 않았다면, 함수를 별도로 선언해야 했을 것입니다.

4. 가독성과 유지보수성 향상

  • 간단한 작업을 수행하는 함수는 람다식을 사용하면 더 읽기 쉽고 유지보수하기 쉬운 코드가 됩니다.
  • 복잡한 로직은 여전히 명명된 함수를 사용하는 것이 좋지만, 짧은 로직은 람다식이 훨씬 효율적입니다.

예시: 짧은 조건부 로직

const getStatus = (score) => (score > 50 ? "Pass" : "Fail");
console.log(getStatus(75)); // "Pass"

5. 콜백 함수의 편리한 작성

  • 람다식은 콜백 함수로 자주 사용됩니다. 복잡한 콜백 로직을 간결하게 작성할 수 있습니다.

예시:

const fetchData = (url, callback) => {
    setTimeout(() => {
        callback(`Data from ${url}`);
    }, 1000);
};

fetchData("https://api.example.com", (data) => {
    console.log(data); // "Data from https://api.example.com"
});

6. 컨텍스트(this) 문제 해결 (JavaScript의 화살표 함수 특징)

  • 람다식(화살표 함수)은 JavaScript에서 this 바인딩 문제를 해결합니다. 화살표 함수는 상위 스코프의 this를 유지하므로, 콜백 함수 내부에서의 this 혼란을 줄여줍니다.

예시:

function Timer() {
    this.seconds = 0;
    setInterval(() => {
        this.seconds++; // 화살표 함수는 상위 스코프의 `this`를 사용
        console.log(this.seconds);
    }, 1000);
}

const timer = new Timer();
  • 기존 함수에서는 this가 달라질 수 있었지만, 화살표 함수는 이를 방지합니다.

람다식의 단점

  1. 복잡한 로직에 적합하지 않음:
    • 람다식은 짧고 간단한 작업에 적합합니다. 복잡한 로직에는 명명된 함수를 사용하는 것이 더 좋습니다.
  2. 가독성 문제:
    • 코드가 너무 간결해져서 오히려 가독성이 떨어질 수 있습니다.

결론

람다식은 다음과 같은 이유로 도입되었습니다:

  1. 간결한 코드 작성.
  2. 익명 함수의 편리한 사용.
  3. 함수형 프로그래밍 지원.
  4. 가독성과 유지보수성 향상.
  5. 콜백 함수 작성의 편리함.
  6. 특정 컨텍스트(this) 문제 해결(JavaScript 화살표 함수의 경우).

0개의 댓글