使用arguments方法递归

时间:2017-07-26 04:19:42

标签: javascript recursion parameters arguments

由于函数调用上的条目,脚本必须打印' Hello'然后' Good bye'但只打印一次。为什么? 这下面有什么不对。

PD:现在它不起作用。如果我评论递归调用行

,它会这样做
<html>
<head>
</head>
<body>
<script type="text/javascript">
    function writing(i,first,second) { 
        len=arguments.length;
        if (i<=len) {
            current=arguments[i];
            c=0;
            inter=setInterval(function() {
                    if (c>=current.length) {
                        clearInterval(inter);
                    } else {
                        field=document.getElementById('div1');
                        field.innerHTML+=current[c];
                        c+=1;
                    }
                },200);
        } 
        i<len?writing(i+1,first,second):writing(i=0,first,second);          
     }
    writing(1,'Hello','Good bye');
</script>
<div id="div1"></div>
</body>

1 个答案:

答案 0 :(得分:1)

代码有很多问题,首先是无限循环(永无止境),第二是变量声明,其他...

我在这里附上了代码片段,请运行并检查,如果您正在寻找它。

我必须添加setTimeout以满足您的要求。

var interval_counter = 0;

function writing(i, first, second) {
    var len = arguments.length;
    if (i != 0 && i <= len) {
        var current = arguments[i];
        var c = 0;
        setTimeout(function() {
            var inter = setInterval(function() {
                if (c >= current.length) {
                    clearInterval(inter);
                } else {

                    field = document.getElementById('div1');
                    field.innerHTML += current[c];
                    c += 1;
                }
            }, 200);
        }, 200 * interval_counter);
        interval_counter = interval_counter + current.length;
        i < (len - 1) ? writing(i + 1, first, second) : writing(i = 0, first, second);
    } else {
        return false;
    }

}
writing(1, 'Hello', 'Good bye');
<div id="div1"></div>