JS高级(6)高阶函数,闭包,递归

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))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值