Webcourse/04-JavaScript基础/23-高阶函数.md
2020-07-04 20:37:20 +08:00

53 lines
1.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 高阶函数
### 高阶函数的概念
函数 A 接收函数 B 作为**参数**或者把函数 C 作为**返回值**输出时我们称 函数 A 为高阶函数
通俗来说高阶函数是 对其他函数进行操作 的函数
### 高阶函数举例1把其他函数作为参数
```js
function fn1(a, b, callback) {
console.log(a + b);
// 执行完上面的 console.log() 语句之后,再执行下面这个 callback 函数。也就是说,这个 callback 函数是最后执行的。
callback && callback();
}
fn1(10, 20, function () {
console.log('我是最后执行的函数');
});
```
打印结果
```
30
我是最后执行的函数
```
### 高阶函数举例2把其他区函数作为返回值
```js
function fn1() {
let a = 20;
return function () {
console.log(a);
};
}
const foo = fn1(); // 执行 fn1() 之后,会得到一个返回值。这个返回值是函数
foo();
```
上面的代码产生了闭包现象关于闭包详见下一篇文章JavaScript基础/闭包.md