Правильные вопросы задаёте...
Во-первых: Последовательность в Java Script не важна, но нужно понимать ход выполнения. Например:
function Mun(a){ return a };
( function(a){ console.log(a+' пошел'); } )( Mun('Первый') )
/* Результат сразу же - Первый пошел */
/* Мы создали функцию и выполнили её */
function MunGo(a){ console.log(a+' ушел'); };
function Mun(a){ return 'Не '+a };
MunGo(Mun('Первый'));
/* Выдаст - Не Первый ушел. */
Во-вторых: Понимайте контекст описаной функции, и не вызывайте её из друго контекста.
... /* продолжая верхний пример*/
( function(a) {
var Mun = function(a){ return a+' и третий'};
MunGo ( Mun(a) ); /* Выдаст - Второй и третий ушел */
}
) ( 'Второй');
MunGo( Mun ('Второй') ); /* Выдаст - Не Второй ушел */
В-третьих: Цикл должен быть максимально простым. Вынесите из него все возможное и не возможное. Это его сильно ускорит. Не только объявления но даже вызовы функций, создание нод, даже обращение к полям объектов старайтесь сделать вне цикла. Внутри цикла опперируйте только переменными локального контекста.
В-чертвертых: Используйте анонимний контекст для всего своего кода, а взаимодействие между разными анономными контекстами делайте через события.