头图
把一个函数作为参数,或者把一个函数作为返回值,这样的结构成为”高阶函数“。

JavaScript的参数

值类型的参数

function plusFive(number) {
  return number + 5;  
};
plusFive(3); // 8

回调函数类型参数

在JavaScript中function可以当做参数传入function中:

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

const isEven = (n) => {
  return n % 2 == 0;
}
 
let printMsg = (evenFunc, num) => {
  const isNumEven = evenFunc(num);
  console.log(`The number ${num} is an even number: ${isNumEven}.`)
}
 
// Pass in isEven as the callback function
printMsg(isEven, 4); 
// Prints: The number 4 is an even number: True.

高阶函数(Higher-Order Functions)

当一个function被当做参数传入一个函数,或者被当做函数的返回,这种结构就被称为高阶函数。

.reduce()

reduce 函数迭代一个数组,返回一个累加的值。

const arrayOfNumbers = [1, 2, 3, 4];
 
const sum = arrayOfNumbers.reduce((accumulator, currentValue) => {  
  return accumulator + currentValue;
});
 
console.log(sum); // 10

.forEach()

forEach 函数传入一个函数,按照数组元素的顺序遍历每一个元素。


const numbers = [28, 77, 45, 99, 27];
 
numbers.forEach(number => {  
  console.log(number);
}); 

.filter()

filter 函数按数组元素顺序遍历每个元素,回调函数需要返回一个布尔值,函数最终返回值为数组。


const randomNumbers = [4, 11, 42, 14, 39];
const filteredArray = randomNumbers.filter(n => {  
  return n > 5;
});

.map()

map 函数按数组元素顺序遍历每个元素,根据回调函数的逻辑返回一个新的数组。

const finalParticipants = ['Taylor', 'Donald', 'Don', 'Natasha', 'Bobby'];
 
// add string after each final participant
const announcements = finalParticipants.map(member => {
  return member + ' joined the contest.';
})
 
console.log(announcements);

来了老弟
508 声望31 粉丝

纸上得来终觉浅,绝知此事要躬行