1.高阶函数
高阶函数是对其他函数进行操作的函数,它接受函数作为参数或将函数作为返回值输出。
举个例子:
function fn(callback){
callback && callback()
}
或
function fn(){
return function(){}
}
fn()
fn(function(){
alert('hi')
})
此时fn就是高阶函数
函数也是一种数据类型,同样可以作为参数,传递给另外一个参数使用,最典型的就是作为回调函数。
2.闭包
2.1.变量的作用域复习
变量根据作用域的不同分为:全局变量和局部变量
1.函数内部可以使用全局变量
2.函数外部不可以使用局部变量
3.当函数执行完毕,本作用域内的局部变会销毁
2.2.闭包是什么
闭包是指有权访问另一个函数作用域中变量的函数
一个作用域可以访问另一个函数内部的局部变量
function fn(){
let num = 10
function fun(){
console.log(num)
}
fun()
}
fn()
此时fn就是闭包函数。
2.3.闭包的作用
延伸变量的作用范围
举个🌰:
function fn(){
let num = 10
return function (){
console.log(num)
}
}
let f = fn()
f() //10
3.递归
– 如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。(函数内部自己调用自己)
– 注意⚠️:递归作用和循环效果一样,由于递归很容易发生“栈溢出”错误,所以必须要加退出条件return
– 举个🌰:
3.1.递归求1~n的阶乘
function jc(n){
if(n==1){
return 1
}
return n *jc(n-1)
}
console.log(fn(3))
3.2.递归求斐波那契数列
function fb(n){
if(n===1 || n=== 2){
return 1
}
return fb(n-1)+fb(n-2)
}
console.log(fb(3))