JS基础--函数的自调用


一、什么是函数的自调用

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

			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
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在JavaScript Paho MQTT中,要实现中断后的自动重连,可以通过以下步骤进行设置: 1. 首先,在执行连接到MQTT服务器的代码时,设置将自动重连的选项。可以通过设置`clientId`属性,使用唯一的客户端ID标识,以便重新连接时保持相同的客户端身份。 2. 在连接中断的情况下,需要监听连接的错误事件,以便在连接错误时触发自动重连机制。可以使用`onConnectionLost`事件监听函数来捕获连接断开的情况。在该函数中,可以执行重新连接到MQTT服务器的代码。 3. 当连接断开后,使用`setInterval`函数实现定时重连。在定时器的回调函数中,对之前的连接进行重新连接的尝试。可以设置重连的时间间隔,例如每隔几秒尝试一次重新连接。 4. 在重新连接的代码中,需要使用之前的连接参数,例如服务器地址、端口号、用户名和密码等,以便重新连接时保持相同的连接配置。 5. 为了避免频繁地尝试连接,可以设置一个连接计数器,每次尝试连接时进行计数,并在一定次数后停止尝试。可以通过适当的延时机制,例如指数退避算法,来逐渐调整重连的时间间隔。 6. 当连接成功后,可以在`onConnect`事件监听函数中执行相应的操作,例如订阅主题、发布消息等。 通过以上步骤,可以实现在JavaScript Paho MQTT中断后的自动重连功能,确保与MQTT服务器的持续连接,并能够在中断后恢复连接并继续进行通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

H5_ljy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值