JavaScript嵌套函数:如何避免循环

时间:2017-05-30 20:42:15

标签: javascript function loops

我正在使用不同的步骤创建一个小的javascript / jQuery应用程序。 为此,我使用具有不同功能的js文件。

在文件的顶部,我调用了我的第一个函数。 在我的第一个函数中,我在单击按钮时调用第二个函数。 在第二个功能中,我想回拨第一个功能,但是"在外面"第二个:我的意思是我不希望第一个函数在第二个函数内运行,因为循环效果...

myFirstFunction();

function myFirstFunction() {

    // some code

    $('myButton').click(function() {
        mySecondFunction();
    }

}

function mySecondFunction() {

    // some code

    $('myOtherButton').click(function() {
        myFirstFunction();
    }

}

我不知道这是否可行,可能是我更好地使用对象或者其他,但我对Javascript很新... 在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以在那里使用单个事件处理程序:

var handler = myFirstFunction;

$('myButton').click(function() { handler(); });

function myFirstFunction() { handler = mySecondFunction; }
function mySecondFunction() { handler = myFirstFunction; }

该处理程序将调用您的任何一个函数。

更新:或者如果这是两个不同的按钮,那么

$('myButton').click( mySecondFunction );
$('myOtherButton').click( myFirstFunction );

答案 1 :(得分:0)

你是对的,因为你提到它可能会变得混乱,所以最好避免在彼此之间嵌套功能。我敢肯定别人可以加入,但如果你想坚持使用vanilla JS,我会创建一个变量来修改状态,并有一个条件语句来确定要运行的函数。

var state = 1;

function handler(){
    if(state == 1){
        myFirstFunction();
        state = 2;
    }
    else if(state == 2){
        mySecondFunction();
        state = 1;
    }
}

然后让你的myButton执行handler()函数。