javascript 为什么这样会无限递归自己,从而造成死循环并且溢出?

JavaScript012

javascript 为什么这样会无限递归自己,从而造成死循环并且溢出?,第1张

我先来解释无限递归

先举一个生活中的例子,就是那个经典的《老和尚给小和尚讲故事》的故事:

从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事。

讲的是什么故事呢?

讲的是:

从前有座山,山里有个庙……

这就是无限递归了。

再来说一下你的程序发生无限递归的原因:

ajQuery 是一个函数。执行这个函数时,函数中的 return 语句会返回一个值。

它会返回什么值呢?

返回值是执行一个新的 ajQuery 函数的返回值,

那么这个新的 ajQuery 函数会返回什么值呢?

这个新的 ajQuery 函数会返回又一个新的 ajQuery 函数的返回值,

……

这是无限递归,也是一种死循环。

最后说一下发生溢出的原因:

每次执行 ajQuery 函数,

都会在结束前执行又一个新的 ajQuery 函数,

并等待它结束,然后自身才能结束。

每执行一个函数都要占用一些资源,只有函数结束后才有可能释放这些资源。

可是,在无限递归过程中,不断地执行一个又一个函数,却从不结束这些函数。

所以,占用的资源就会越来越多。

直到占用的资源超出了允许的范围,就溢出了!

两个循环括号里都是条件,语法不同而已。

对while来说,它的条件是当i<5时循环执行大括号里的代码,所以必须在代码里加上i++作为条件限制,否则while将无限循环。

对for来说,更是一目了然,i初始值为1,每执行一次同时执行i++,当执行至i=11时,否决条件i<11,终止循环。

没太明白。你是需要一个无限循环吗?

可以做一个死循环,或者做一个计时器

死循环:

while(1){

console.log("a")

}

计时器:

setInterval(function(){

console.log("a")

},100)