调用作用域,自己调用自己

img

因为fn1是定义在全局作用域,所以能在全局或者全局的子集调用。

img


fn也属于全局的子集作用域,那为什么不能在fn1内部自己调用自己呢,像递归函数一样不也是自己调用自己么?

递归函数有中断的时候啊,你这样写根本就没中断返回的时候,无限递归。

可以调用吧,但是你没有终止条件,所以溢出报错了

img

Java script 可以自己调用自己

function my()
{
console.log('d`);
}
setTimeout('my()',1000);

可以调用,但是递归是有终止条件的,你这里没有边界终止条件,会一直递归fn1(2,3),不会终止,如果想正常调用,就加上边界终止条件。

1、递归正是这种自调的形式,在本题中没有作用域的概念;
2、递归显得更加优雅,常用于递减,递增,树形结构查找,高阶函数计算等;
3、缺点也显而易见,递归如果阈值设定不当就会超出预期限制,一直执行下去,造成内存溢出
不知道这样回答,题主是否满意

自己调用自己,这是属于递归调用,但是你必须设置终止条件,否则会一直执行,直到溢出报错为止

在没有限制的情况下,递归运算会无终止地自身调用.
所以 在递归运算中要结合 条件语句(if)进行控制.
只有在某个条件成立时才允许执行递归,否则不允许调用自身。

没有终止条件

没有终止条件会溢出