Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.7k views
in Technique[技术] by (71.8m points)

函数自调用循环return后有什么弊端?

以JS为例

function func(){    
    ...    
    ...    
    if(!...){
     func();
     return;
    }    
    ...    
    ...    
    if(!...){
     func();
     return;
    }    
    ...
    ...
    func();
}

我有个需求是不停的执行这个任务,条件不成立则重新执行,这样的循环有什么弊端呢~ 感觉怪怪的~~
如果有弊端java、js、php、中弊端相同吗?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

递归调用的话,会有最大调用栈的限制,当然……如果业务判断都超出了最大调用栈那确实很可怕了。

还有一个问题,就是递归进去的可能存在内存不释放的问题,可以换个方案,如使用 do...while

<?php
$foo = 0;
function foo()
{
    global $foo;
    if ($foo < 1000000) {//逻辑 ~
        $foo += 1;
        return false;// 不成立就返回 false
    }
    return true;
}

$do = true;
do {
    // 这里多了一步取反,如果不想要这个取反,那方法里面的返回值反过来就行,只是方法里面条件不成立 返回 false 更加符合常理一些。
    $do = !foo();
} while ($do);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...