学习arguments 看到的一篇奇怪的现象

<script>
    function repeat(fn, times, delay) {

        return function() {

            if(times > 0) {

                fn.apply(null, arguments);

                var args = Array.prototype.slice.call(arguments);

                var self = arguments.callee;

                times-=1;

            //把self.apply(null,args);这句话放在settimeout里面执行和放在外面执行效果不同

               // self.apply(null,args);
                setTimeout(function(){
                    self.apply(null,args);
                },delay);


            }
        }
        }
    function comms(s) {
     //   document.write(i +"-------" + "<br/>");
        document.write(i+s+"<br/>");
        i++;
    }
    var i=0;
    var somethingWrong = repeat(comms, 3, 200);


    somethingWrong("Can you hear me, major sg?");

</script>

上面的代码直接放到chrome里面就能运行,现在的现象是打印3次,但是第二次打印的时候覆盖了第一次打印的东西,求大神解答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值