JavaScript--回调函数以及自调用

回调函数:一个函数被作为参数传递给另一个函数,这时的实参是一个函数

这里的例子是将外部声明的函数fm调给fn函数里面的arg函数

<script>
			function fn(arg) {
				var arg = function fm() {
					console.log("111")
				}
				console.log("222")
				arg()
				console.log("333")
			}
			function fm() {
				var i = 10
				var b = 20
				console.log(`444`)
			}
			fn(fm)
			fm()
		</script>

                ​​​​​​​        

 

 根据程序运行步骤:先调用fn函数执行,将函数fm传递给形参,这时fn里面的arg函数只声明未调用,所以执行222的语句,当调用arg函数后,则打印111的语句,然后按照顺序执行333的语句,执行完fn里面的函数后,退出,这时调用了fm函数,所以打印了444这条语句

函数自调用:函数表达式可以自己调用自己,也叫立即执行函数

它有以下方式:(1)添加括号,用于说明该函数是一个表达式

<script>
			(function fn(){
				var x="5555"
				console.log(x)
				console.log("4444")
			})()
            fn()
		</script>

        ​​​​​​​        ​​​​​​​                       

                若再使用fn()来调用的话则会出错        

                         

 

        (2)若该函数是一个匿名函数,可以将其赋给一个变量,再在函数声明结束后的花括号后面加一个小括号等价于var re=arr()

<script>
			var arr=function (){
				var x="111"
				console.log(x)
				console.log("222")
			}()
		</script>

                                

 

        ​​​​​​​        

 例题:函数自调用例子

	<script>
			function fn(n) {
						if (n <= 1) { //终止条件
							return 1 //这里返回最后一次调用的值
						} else {
							return n * fn(n - 1)
						}
					}
					var re = fn(5)
					console.log(re)
		</script>

这里调用函数后传入一个5的实参,fn里的条件是当n小于等于1是返回1,其他值时返回n*fn(n-1),因为5是从外面传进来的,所以每次都会从函数外面进来再判断

        第一次返回的值为5*fn(5-1)

        第二次返回的值为4*fn(5-1-1)

        第三次返回的值为3*fn(5-1-1-1)

        第四次返回的值为2*fn(5-1-1-1)

        第五次返回的值为1*fn(5-1-1-1-1)

        所以最终结果是5*4*3*2*1=120

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值