JS基础--函数的自调用

本文详细介绍了函数自调用的概念及其在计算阶乘、遍历复杂数据结构等场景的应用。通过实例展示了如何避免无限循环并利用条件判断控制递归。同时,讨论了arguments对象在函数自调用中的作用,以及对象中函数自调用的方法。最后,探讨了自调用函数在实际编程中的实用技巧。
摘要由CSDN通过智能技术生成


一、什么是函数的自调用

可以理解为函数自己调用自己,也就是在函数内部放入调用这个函数的代码。在函数运行时执行调用代码,可以一直循环调用这个函数。
例如:

			var a=100
			function fn () {
				console.log(666)
				fn()
			}			
			fn()  

这会无限循环打印666,会导致电脑卡死。
解决方法添加条件判断语句
例如:

		            let i=10         //注意这里I不能放在函数里面,函数每次调用都会重新执行内部代码
		                                //放在里面就会每调用都重新声明了i,解决方法:通过传参方式
					function  fn () {
						if(!i){
							return i ;      
						}
						else{
                            console.log(666)
							i--;
							fn()
						}
						
					}
					fn()

二、函数自调用的案例

通过函数自调用输出10的阶乘

			function fn (n) {
			   	if(n<=1){
					return 1
				}
				else{
					return n*fn(n-1)
				}
			}						
			var re=fn(10)
			console.log(re)

假设你只知道数组内部全是(数字和数组的混套),不知道嵌套了几层,打印出所有数字

var arr=[[1,2,3,4,[2,3,4,5],[2,3,4,5],[4,54,2,6]],[2,3,4,4,5,6]]
		let myArr=function(arr){
			 for(let i=0;i<arr.length;i++){
				 if(typeof(arr[i])=='number'){
					 console.log(arr[i])
				 }else{
					 myArr(arr[i])
				 }
			 }
		 }
		 myArr(arr);

补充知识点:arguments

			function fn (a,b) {
				
				//实参==>调用时传入的数据(两种写法  数据直接量 变量)
				// arguments.length 实参数量
				// arguments.callee 运行的函数对象
				
			}
			
			fn(10,20)

对象中的函数的自调用方法

			var obj={say:function(){
				 obj.say()
			}}

自调用函数的自调用

			(function(n){
				if(n<=1){console.log(1)}
				else{console.log(n);arguments.callee(n-1) }
			})(10)  //打印10,9,8,7,6,5,4,3,2,1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H5_ljy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值