高阶函数
高阶函数式这样的一个函数:
- 接受另一个函数做为参数
- 返回一个函数做为结果
在JavaScript世界里,函数是一等公民。它们能被当成值一样保存和传递:我们能把函数赋值给一个变量,或传递一个函数到另一个函数里。
1 | const double = function(x) { |
函数做为参数传递的典型例子就是回调函数,回调函数可以是匿名函数,也可以是命名函数:
1 | const myBtn = document.getElementById('myButton'); |
我们也能把函数做为参数传递给另一个我们创建的函数,然后执行函数参数:
1 | function sayHi() { |
注:如上实例,当传递一个命名函数做为参数,我们不需要用括号
()
。这就像我们当一个对象一样传递函数。括号会让函数执行,且把执行后的结果当做参数,替换函数本身。
高阶函数能返回另一个函数:
1 | function whenMeetingJohn() { |
高阶函数的优势
JavaScript函数作为一等公民的特性,促进了函数式编程。
想学习更多高阶函数相关,可参考下列资源:
Functions are first class objects in JavaScript
Higher-Order Functions in JavaScript
Higher-order functions - Part 1 of Functional Programming in JavaScript
Eloquent JavaScript - Higher-order Functions
Higher Order Functions
阅读原文:https://auth0.com/blog/glossary-of-modern-javascript-concepts/