无限调用javascript函数

时间:2017-10-22 22:01:01

标签: javascript function

我是JS的新手,我只是想知道是否有可能创建一个包含2个函数的循环。例如:

function a() {
    var myvar =1;
    b();
}
function b(){
    var myvar =2;
    a();
}
a();

当我尝试运行它时,我得到了这个结果“Uncaught SyntaxError:意外的输入结束”

2 个答案:

答案 0 :(得分:0)

您尝试的方法对潜在的内存泄漏非常危险。

您应该使用的方法是调用setInterval。其中3000表示每次迭代前的毫秒数。

setInterval(
    function(){ 
        alert("Hello"); 
    }, 
    3000
);

请参阅https://www.w3schools.com/jsref/met_win_setinterval.asp

答案 1 :(得分:0)

是的,你可以这样做,但有一些事情要记住:

  • 这可能会导致内存泄漏,并可能会降低用户的浏览器速度
  • 在没有延迟的情况下在两个函数之间循环将超过最大堆栈大小

当然,你可以使用setInterval,但它不是很灵活。

我喜欢使用的函数写得有点像这样:

(function(delay, callback){
    var loop = function(){
        callback();
        setTimeout(loop, delay);
    }; loop();
})(1000, function(){console.log('Hello World!')});

每1000毫秒或1秒记录'Hello World!'

另一种方法是简单地在超时时引用自身,如下所示:

function sayHello(){
    console.log('Hello World!');
    setTimeout(sayHello, 1000);
}; sayHello();

..或者更好,一个永久的解决方案:

function loopFunction(delay, callback){
    var loop = function(){
        callback();
        setTimeout(loop, delay);
    }; loop();
};

loopFunction(1000, function(){console.log('Hello World!')});

要每隔一个时间间隔调用两个函数,您可以创建一个切换开关,或稍后使用setTimeout调用第二个函数。