高阶函数
概念
高阶函数是对其他函数进行操作的函数,分为两种,接受函数作为参数或者将函数作为返回值进行输出
接受函数作为参数
典型的使用:回调函数
回调函数是作为参数传给另一个函数的函数,然后通过在外部函数内部调用该回调函数以完成某种操作
// 函数作为参数
function fn(a, b, callback) {
console.log(a+b);
callback && callback();
}
fn(1, 2, function() { // 回调函数
console.log('1111');
})
将函数作为返回值进行输出
function fn() {
return functon() {}
}
闭包
概念
闭包(closure):有权访问另一个函数作用域中变量的函数
主要作用:延伸变量的作用范围
function fn() {
let num = 11;
function fun() {
// fun这个函数作用域访问了另一个函数fn中的局部变量num,即产生了闭包
console.log(num); // 11
}
fun();
}
fn();
在外部作用域访问内部的局部变量
function fn() {
let num = 10;
return function() {
console.log(num);
}
}
let f = fn();
f(); // 10
应用
let car = (function() {
// 局部变量
let start = 13;
// 局部变量
let total = 0;
return {
price: function(n) {
if(n <= 3) {
total = start;
} else {
total = (n - 3) * 5 + start
}
return total;
},
yd: function(flag) {
return flag ? total + 10 : total;
}
}
})();
car.price(5); // 23
car.yd(true); // 33
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!