Javascript JQuery-在参数函数中与变量作用域混淆

Javascript JQuery-在参数函数中与变量作用域混淆,javascript,jquery,Javascript,Jquery,我想要实现的是让两个左边的字母从左边飞入,让两个右边的字母从右边飞入。我找不到哪里出了问题。我可以马上告诉你,我看到使用了全局变量。特别是restoreTile和animateTile函数中的字母变量,由于未声明该变量,因此这两个函数都使用相同的全局变量。我不确定解决这个问题是否能解决你的整个问题。 function restoreTitle() { for (var i = 0; i < 4; i++) { clicks[i] = false; l

我想要实现的是让两个左边的字母从左边飞入,让两个右边的字母从右边飞入。我找不到哪里出了问题。

我可以马上告诉你,我看到使用了全局变量。特别是restoreTile和animateTile函数中的字母变量,由于未声明该变量,因此这两个函数都使用相同的全局变量。我不确定解决这个问题是否能解决你的整个问题。
function restoreTitle() {
    for (var i = 0; i < 4; i++) {
        clicks[i] = false;
        letter = $('#title-wrapper p[index="' + i + '"]');
        letter.css('cursor', "pointer");
    }
    animateTitle();
}

function animateTitle() {
    for (var i = 0; i < 4; i++) {
        letter = $('#title-wrapper p[index="' + i + '"]');
        direction = i < 2 ? 1 : -1;
        letter.css('right', 50 * direction + "%");
        doAnimateLetter(i, letter, direction);
    }
}

function doAnimateLetter(i, letter, direction) {
   loop(function(){
        var current = letter.css('right').replace("%", "");
        var incoming = parseInt(current) - (5 * direction);

        letter.css('right', incoming + "%");
        var completed = incoming == 0;
        if(completed) letter.fadeTo(animation_speed, 1);
        return !completed;
    });       
}

function loop(run) {
    if (run.apply()) requestAnimationFrame(function () {
        loop(run);
    });
}