다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
함수를 전달인자(argument) 또는 매개변수(parameter)로 받거나 함수를 리턴하는 함수를 말한다.
# func는 익명함수
# 다른 함수를 인자로 받는 경우
function mul(num) { return num * num }
function mulNum(func, num) {
return func(num);
}
# 함수를 리턴하는 경우
function mul(num1) {
return function(num2) {
return num2*num1;
};
}
# 함수를 인자로 받고, 함수를 리턴하는 경우
전달인자(Argument)로 받는 함수
// 일반함수
const mul = function(num) { return num * 2 }
// 매개변수(parameter)로 func를 받았고, 함수(func)를 리턴하기 때문에 고차함수
const mulNum = function(func, num) { return func(num) }
// mulNum은 전달인자(argument)로 함수(mul)을 받았으므로 고차함수
// 전달인자(argument)로 받은 함수인 mul은 콜백함수
mulNum(mul, 3) // 6
배열의 요소 중 특정 조건을 만족하는 요소들만 걸러내는 (filter) 메소드
// 아래 코드에서 '짝수'와 '길이 5 이하'는 문법 오류(syntax error)에 해당합니다.
// 의미만 이해하도록 합니다.
let arr = [1, 2, 3, 4];
let output = arr.filter(짝수);
console.log(output); // ->> [2, 4]
arr = ['hello', 'code', 'states', 'happy', 'hacking'];
output = arr.filter(길이 5 이하)
console.log(output); // ->> ['hello', 'code', 'happy']
// 함수 표현식
const isEven = function (num) {
return num % 2 === 0;
};
let arr = [1, 2, 3, 4];
// let output = arr.filter(짝수);
// '짝수'를 판별하는 함수가 조건으로서 filter 메소드의 인자로 전달됩니다.
let output = arr.filter(isEven);
console.log(output); // ->> [2, 4]
const isLteFive = function (str) {
// Lte = less then equal
return str.length <= 5;
};
arr = ['hello', 'code', 'states', 'happy', 'hacking'];
// output = arr.filter(길이 5 이하)
// '길이 5 이하'를 판별하는 함수가 조건으로서 filter 메소드의 인자로 전달됩니다.
let output = arr.filter(isLteFive);
console.log(output); // ->> ['hello', 'code', 'happy']
배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환.
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15