Почему такой порядок интерпретации?
1. Переменная изменяется в конце цикла, а alert() вызывается 3 раза в начале цикла до изменения переменной. В цикле 3 итерации, а после окончания его работы переменная получает значение 3.
2. В цикле происходит вызов асинхронно исполняемого кода. Это значит, что на момент выполнения этого кода цикл уже закончил свою работу и значение переменной равно 3.
И прекратите употреблять слова, которые не имеют смысла в данном контексте. Причём тут «интерпретация»? Интерпретация происходит до выполнения кода.
Прочитайте про асинхронные запросы, тогда поймете почему порядок нарушается.
Код написан плохо- читать трудно!