Когда вы присваиваете переменную без использования var
, и она не существует нигде в текущей области, она ищется в следующей области вверх. Если его там нет, проверяется следующий объем и т. Д.
Если переменная не найдена в любой области видимости, она присваивается глобальной области. Таким образом, и func01
, и func01
ссылаются на одну и ту же переменную i
и обновляют ее. Итак, func02
работает, зацикливается и заканчивается. Затем к моменту, когда он достигает func01
, i
равен 6
, и цикл не запускается снова в func0
.
Вы можете получить ожидаемый результат, если измените счетчики на var
. Это охватит i
функциями, в которых они находятся.
function func02(){
for (var i = 1; i <= 5; i++){
document.write(" func02 " + i + "<br>");
}
}
function func01(){
for(var i = 1; i <= 3; i++){
document.write("func01 " + i + "<br>");
func02();
}
}
func01();