高阶函数

概念

高阶函数是对其他函数进行操作的函数,分为两种,接受函数作为参数或者将函数作为返回值进行输出

接受函数作为参数

典型的使用:回调函数

回调函数是作为参数传给另一个函数的函数,然后通过在外部函数内部调用该回调函数以完成某种操作

// 函数作为参数
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();

image-20200818222038219

在外部作用域访问内部的局部变量

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 协议 ,转载请注明出处!

浅拷贝与深拷贝 上一篇
严格模式 下一篇