Une fonction d'ordre supérieur est une fonction qui soit :
C'est l'un des fondements de la programmation fonctionnelle.
Exemples de fonctions d'ordre supérieur en JS :
//map() and reduce() let nums = [1, 2, 3, 4] let addOne = nums.map((i) => i+1) // [2,3,4,5] let combined = nums.reduce((res, cur) => res+=cur, 0) // 10
Imaginez que vous travaillez avec des listes de nombres et que vous devez effectuer différentes opérations (par exemple, doubler, mettre au carré ou ajouter une constante). Au lieu d'écrire plusieurs boucles similaires, vous pouvez résumer le comportement avec une fonction d'ordre supérieur.
//normal version let numbers = [1, 2, 3, 4]; const squares = (nums) => { let result = []; for(let i of nums) { result.push(i*i); } return result; } const addThree = (nums) => { let result = []; for(let i of nums) { result.push(i+3); } return result; } squares(numbers) // [1,4,9,16] addThree(numbers) // [4,5,6,7]
//higher-order function version let numbers = [1, 2, 3, 4]; const applyAll = (func, nums) => { let result = []; for(let i of nums) { result.push(func(i)); } return result; } applyAll((i) => i*i, numbers) // [1,4,9,16] applyAll((i) => i+3, numbers) // [4,5,6,7]
Avec une fonction générique d'ordre supérieurapplyAll, vous pouvez gérer plusieurs opérations et éviter le code répétitif.
En composant de petites fonctions, vous pouvez créer des comportements plus complexes. Par exemple, si vous souhaitez d'abord filtrer une liste de nombres pour obtenir uniquement les nombres pairs, puis les doubler, puis les additionner tous ensemble, vous pouvez enchaîner des fonctions d'ordre supérieur.
//you can chain filter -> map -> reduce let numbers = [1, 2, 3, 4]; let result = numbers .filter(i => i%2===0) .map(i => i*2) .reduce((res, cur) => res+=cur, 0); // 12
Chaque étape (filtrage, mappage, réduction) est gérée par une fonction d'ordre supérieur, ce qui rend le processus plus modulaire, plus facile à maintenir et testable de manière isolée.
C'est ça ! Merci d'avoir lu jusqu'ici. À la prochaine fois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!