함수 질문/답변

어승준·2023년 10월 4일

JS 스터디

목록 보기
4/26
post-thumbnail

📌 콜백 함수(callback function)에 대해서 설명해 주세요.

▶️ 정의

  • 다른 함수에 인수(argument)로 전달되는 함수

▶️ 특징

  • 콜백 함수는 해당 함수의 실행이 완료되면 호출되거나, 어떤 이벤트가 발생했을 때 실행되는데 사용
  • 비동기 작업 완료 후 결과 처리 위해 사용

📌 고차 함수와 curry 함수에 대해서 설명해주세요

▶️ 고차 함수란

  • 고차 함수는 다른 함수를 인수로 받거나 함수를 반환하는 함수입니다.
  • 함수를 데이터처럼 다루고 조작할 수 있는 능력을 제공합니다.
  • map, filter, reduce와 같은 배열 메서드, setTimeout과 같은 비동기 작업 관리, 이벤트 처리 등이 고차 함수의 예입니다.
  • 예시
// 고차 함수 예제: map 함수
function double(x) {
  return x * 2;
}
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(double); // [2, 4, 6, 8, 10]

▶️ curry 함수란

  • 여러 개의 인수를 받는 함수를 하나의 인수를 받는 함수 체인으로 변환하는 기법입니다.
  • 이를 통해 함수를 부분 적용하고 재사용성을 높일 수 있음
  • 예시
// 커리 함수 예제
function add(x) {
  return function (y) {
    return x + y;
  };
}

const add5 = add(5); // add 함수의 첫 번째 인수를 5로 설정
console.log(add5(3)); // 8
console.log(add5(7)); // 12

📌 매개변수와 인자(argument)의 차이는 무엇인가요?

▶️ 매개변수

  • 매개변수는 함수 정의 시에 선언되고 함수 내에서 사용
  • 예제 (JavaScript 함수 정의에서 매개변수 사용):
function greet(name) {
  console.log(`안녕하세요, ${name}님!`);
}

위 코드에서 name은 함수 greet의 매개변수입니다.

▶️ 인자

  • 인자는 함수를 호출할 때 전달되는 실제 값 또는 표현식
  • 예제 (JavaScript 함수 호출에서 인자 사용):
greet("John");

위 코드에서 "John"은 함수 greet를 호출할 때 전달되는 인자입니다.


📌 함수 표현식으로 정의한 함수를 함수 표현식 이전에 호출할 수 있나요? 그 이유는 무엇인가요?

▶️ 함수 선언

  • 함수 선언은 function 키워드로 시작하며, 함수의 이름이 존재합니다.
  • 함수 선언은 런타임 이전에 호이스팅(Hoisting)이 발생하므로 함수 선언 이전에 호출할 수 있습니다.
sayHello(); // 가능

function sayHello() {
  console.log("안녕하세요!");
}

▶️ 함수 표현식

  • 함수 표현식은 함수를 변수에 할당하는 방식으로 정의되며, 함수의 이름이 없거나 선택적입니다.
  • 함수 표현식은 변수에 할당된 이후부터 해당 변수를 통해 호출할 수 있습니다.
sayHello(); // 불가능

const sayHello = function() {
  console.log("안녕하세요!");
};

📌 Pure Function(순수 함수)의 규칙과 사용하는 이유에 대해서 설명해 주세요.

▶️ 순수 함수란?

  • 순수 함수는 입력에 대해 항상 동일한 출력을 반환하는 함수입니다.

▶️ 순수 함수의 규칙:

  • 동일한 입력에 대해 항상 동일한 출력을 반환해야 합니다.
  • 외부 상태를 변경하거나 외부 데이터에 의존해서는 안 됩니다.
  • 부작용이 없어야 합니다. 즉, 함수 호출로 인해 시스템의 상태가 변하지 않아야 합니다.

▶️ 순수 함수를 사용하는 이유:

  • 예측 가능성: 동일한 입력을 주면 항상 동일한 결과를 얻을 수 있어 버그를 줄이고 코드를 이해하기 쉽게 만듭니다.
  • 재사용성: 순수 함수는 다른 부분에서 쉽게 재사용할 수 있으며, 라이브러리로 공유하기에 좋습니다.
profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글