函数式一等公民
-函数可以存储在变量中
-函数作为参数
-函数作为返回值
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>