Вы добавляете i в объект Global window, это будет работать так, как вы ожидаете:
function a() {
for (var i=0;i<10;i++) { // Changed to i1
console.log('a',i);
b() ; }
}
function b() {
for (var i=0;i<10;i++) { // Changed to i2
console.log('b',i);
}
}
a();
Место "использовать строгое"; в верхней части каждого файла Javascript, и вы никогда больше не встретите такую странность. Разместите «используйте строгий» в верхней части вашего Javascript сейчас. Вы увидите, что в обоих случаях есть ошибка, потому что вы объявляете их с ключевым словом var
.
Когда вы начали, вы объявили i в своем первом цикле for (i=0;i<10;i++)
, вы поместили i в глобальную область видимости: window.i
. Таким образом, оба цикла for используют одну и ту же переменную window.i
.
Второй цикл for в функции b не объявляет новую переменную i
, глобальная переменная i используется, потому что она была создана в функции a.