js 函数内部创建的setTimeout调用自身函数

js 函数内部创建的计时器setTimeout调用自身函数,实际上就变成了setInterval,操作不当的话会导致计时器不断在创建

在本函数内部清除计时器的时候带上 return ;

例如:

<script type="text/javascript">

    var t=3,timer;
    function sleep(){
        if(t<=0){
            clearTimeout(timer);
            alert("over");
            //一定要return,不然下面又创建了新的定时器
            return;
        }
        alert("hello");
        t--;
        timer = setTimeout("sleep()", 1000);
    }
    sleep();
</script>
原文地址:https://www.cnblogs.com/yu-709213564/p/6817470.html