高阶函数及闭包

函数式一等公民
-函数可以存储在变量中
-函数作为参数
-函数作为返回值

1)函数复制给变量

let fn =function(){
  conslole.log(111)   
}
fn()

2)函数作为参数

function forEach(array,fn){
  for(let i=0;i<array.length;i++){
    fn(array[i])
  }
}
let arr = [1,2,3,4]
forEach(arr,function(item){
  console.log(item)
})

3)函数作为返回值

function makeFn(){
  let msg ="hello waord";
  return function(){
    console.log(msg);
  } 
}
// const fn = makeFn();
// fn();
makeFn()();

意义:

-抽象可以帮我们屏蔽细节,只需要关注我们的目标
-高阶函数是用来抽象通用的问题

闭包(Closure)概念

-函数和其周围的状态(词法环境)的引用捆绑在一起形成闭包
-可以在另一作用于中调用一个函数的内部函数并访问到该函数的作用域中的成员

示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    function makePower(power){
      return function(number){
        return Math.pow(number,power)
      }
    }
    //求平方
    let power2 = makePower(2);
    let power3 = makePower(3);
    console.log(power2(2));
    console.log(power2(3));
    console.log(power3(4));
  </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容