console.log(name);
}
function showOrdinaryPersonName() {
name = "Johnny Evers";
console.log(name);
}
showCelebrityName(); // Michael Jackson
// переменная name не была объявлена в функции, поэтому она изменяет глобальную
showOrdinaryPersonName(); // Johnny Evers
showCelebrityName(); // Johnny Evers
/* Решением данной проблемы будет объявление локальной переменной с помощью ключевого слова var */
function showOrdinaryPersonName() {
var name = "Johnny Evers";
console.log(name);
}
Тогда почему при таком пододе глобальная переменная перетирается? А в моем случае нет?
Она не перетирается, а замыкается - ты можешь референсить уже объявленные имена, но не можешь создавать новые, и это правильно
потому что в твоем случае была создана переменная в Lexical Environment при инициализации функции b
Обсуждают сегодня