고차함수: 함수를 인자로 받을수 있고, 함수의 형태로 리턴할 수 있는 함수
콜백함수: 1. 다른함수의 인자로서 전달되수 있는 함수 / 2. 어떤 이벤트에 의해 호출되어지는 함수.
익명함수: 자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다.
let 변수명 = function( 매개변수 ){
실행문;
};
//익명 함수 호출
orange( );
//익명 함수 선언
let orange = function( ) {
document.write("This is an orange.");
};
// result : 오류
//일반 함수 호출
Good( );
// result : Good Job!
//일반 함수 선언
function Good( ) {
document.write("Good Job!");
}
대표적인 내장 배열 고차함수 : map, filter, reduce
아래는 내장 배열 함수
(1) arr.find (no mutation)
정의: 배열에서 특정 값을 찾는 조건을 callback 함수를 통해 전달하여,조건에 맞는 값 중 첫번째 값을 리턴합니다.
만약 배열에 조건을 만족하는 값이 없으면 undefined를 리턴합니다.
예시)
const arr = [
{name: 'attack', value : 100},
{name: 'defence', value : 240},
{name: 'shield', value: 100}
];
function damageValue(element) {
if(element.value === 100) {
return true;
}
}
const damage = arr.find(damageValue);
console.log(damage)
{name: 'attack', value: 100}
해당 배열의 값을 리턴하고, 더 이상 나머지 배열의 값은 callback 함수로 전달하지 않습니다.
결국, find() 함수는 callback 함수에 정의된 조건에 부합하는 배열의 첫 번째 값을 리턴하는 것입니다.
(2) arr.forEach (no mutation)
정의: forEach() 메서드는 주어진 함수를 배열 요소 각각에 대해 실행합니다.
예시:
const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));
// expected output: "a"
// expected output: "b"
// expected output: "c"
(3) arr.every (no mutation)
정의: 값이 Array에 존재하는지를 확인한다. every 함수 안에서 true를 리턴하면 loop를 계속 진행하고, false를 리턴하면 리턴한 시점에서 멈춘다.
특징: Array.forEach()와 다르게 loop를 돌다가 중간에 멈출 수 있는 아주 좋은 함수이다. 그래서 Array.forEach()를 사용할 때는 어떤 일이 일어나도 0번부터 N번까지 돌아야 할 때 사용하고, Array.map()은 마찬가지로 어떤 일이 일어나도 0번부터 N번까지 돌지만, 값에 변형을 줘야 할 때 사용한다. 그리고 이 Array.every() 어떤 일이 발생하면 loop를 멈출 필요가 있을 때 사용한다.
예시
const ages = [32, 33, 16, 40];
function checkAge(age) {
return age > 18;
}
ages.every(checkAge) // Returns false
기준이 없으면 사전식 정렬을 합니다.
const arr = [
{name: 'attack', value : 100},
{name: 'defence', value : 240},
{name: 'shield', value: 100}
];
function damageValue(element) {
if(element.value === 100) {
return true;
}
}
const damage = arr.sort(damageValue);
console.log(damage)
(3) [{…}, {…}, {…}]
0: {name: 'attack', value: 100}
1: {name: 'defence', value: 240}
2: {name: 'shield', value: 100}
length: 3
[[Prototype]]: Array(0)
출처 :
(1) https://www.w3schools.com/jsref/jsref_every.asp
(2) mdn
(3) 코드스테이츠