
함수를 인수로 전달받거나 함수를 반환하는 함수
자바스크립트의 함수는 일급 객체이므로 함수를 값처럼 인수로 전달할 수 있으며 반환할 수도 있다.
고차 함수는 외부 상태의 변경이나 가변 데이터를 피하고 불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있다.
순수 함수와 보조 함수의 조합을 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임
조건문이나 반복문은 로직의 흐름을 이해하기 어렵게 하여 가독성을 해치고, 변수는 누군가에 의해 언제든지 변경될 수 있어 오류 발생의 근본적 원인이 될 수 있기 때문이다.
함수형 프로그래밍은 순수 함수를 통해 부수 효과를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높이려는 노력의 일환이라고 할 수 있다.
sort메서드의 기본 정렬 순서는 유니코드 포인트의 순서를 따른다.const fruits = ["banana", "apple", "cherry"];
fruits.sort();
console.log(fruits); // 출력: ["apple", "banana", "cherry"]
// 숫자 정렬
const numbers = [10, 5, 20, 15];
numbers.sort((a, b) => a - b);
console.log(numbers); // 출력: [5, 10, 15, 20]
// 객체 정렬
const users = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 20 },
{ name: "Charlie", age: 30 }
];
users.sort((a, b) => a.age - b.age);
console.log(users);
// 출력: [{ name: "Bob", age: 20 }, { name: "Alice", age: 25 }, { name: "Charlie", age: 30 }]
forEach 메서드의 반환값은 언제나 undefined이다.break, continue 문을 사용할 수 없다. (순회를 중단할 수 없다.)const numbers = [1, 2, 3, 4];
numbers.forEach((num) => console.log(num * 2));
// 출력: 2, 4, 6, 8
const numbers = [1, 2, 3, 4];
const doubled = numbers.map((num) => num * 2);
console.log(doubled); // 출력: [2, 4, 6, 8]
const numbers = [1, 2, 3, 4];
const evenNumbers = numbers.filter((num) => num % 2 === 0);
console.log(evenNumbers); // 출력: [2, 4]
accumulator)과 현재 요소를 인수로 받아 계산을 진행한다.reduce 메서드는 하나의 결과값을 반환한다.const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 출력: 10
const numbers = [1, 3, 5, 7];
const hasEven = numbers.some((num) => num % 2 === 0);
console.log(hasEven); // 출력: false
const numbers = [2, 4, 6, 8];
const allEven = numbers.every((num) => num % 2 === 0);
console.log(allEven); // 출력: true
const numbers = [1, 2, 3, 4];
const firstEven = numbers.find((num) => num % 2 === 0);
console.log(firstEven); // 출력: 2
const numbers = [1, 3, 5, 7];
const index = numbers.findIndex((num) => num > 4);
console.log(index); // 출력: 2
flat 메서드와 함께 사용할 수 있다.const arr = [1, 2, 3];
const result = arr.flatMap((num) => [num, num * 2]);
console.log(result); // 출력: [1, 2, 2, 4, 3, 6]
// 중첩 배열에서 값 추출
const sentences = ["hello world", "how are you"];
const words = sentences.flatMap((sentence) => sentence.split(" "));
console.log(words); // 출력: ["hello", "world", "how", "are", "you"]
↪ flatMap은 빈 배열을 반환하는 요소는 제외하므로 필터링 효과도 있다.