Skip to content
Shimon's BlogShimon's Blog
主页
杂谈
  • 主页
      • 代码笔记
          • 代码学习教程
              • JavaScript 教程
                  • 函数
                    • generator
                      • map & reduce
                        • this 的指向
                          • 函数介绍
                            • 函数作用域
                              • 函数的声明
                                • 函数的属性和方法
                                  • 函数的调用
                                    • 箭头函数
                                      • 解构赋值
                                        • 闭包
                                          • 高阶函数
                                          • 错误处理
                                          • 如何学习一门计算机语言

                                        高阶函数

                                        Shimon Zhan2019年10月5日
                                        • JavaScript
                                        小于 1 分钟

                                        高阶函数英文叫 Higher-order function。

                                        JavaScript 的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

                                        一个最简单的高阶函数:

                                        const add = (x, y, f) => f(x) + f(y);
                                        

                                        或者写作

                                        function add(x, y, f) {
                                          return f(x) + f(y);
                                        }
                                        

                                        当我们调用 add(-5, 6, Math.abs) 时,参数 x,y 和 f 分别接收 -5,6 和函数 Math.abs,根据函数定义,我们可以推导计算过程为:

                                        x = -5;
                                        y = 6;
                                        f = Math.abs;
                                        f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11;
                                        return 11;
                                        

                                        用代码验证一下:

                                        "use strict";
                                        
                                        const add = (x, y, f) => f(x) + f(y);
                                        const x = add(-5, 6, Math.abs);
                                        
                                        console.log(x); // 11
                                        

                                        编写高阶函数,就是让函数的参数能够接收别的函数。

                                        上次编辑于: 2022/4/19 07:13:07
                                        贡献者: ShimonZhan
                                        上一页
                                        闭包
                                        Copyright © 2021-present Shimon Zhan