Почему выведет «Вася»?

Почему данный код выведет "Вася"?
let name = "Вася";
function sayHi() {
alert(name);
}

setTimeout(function() {
let name = "Петя";
sayHi();
}, 1000);
  • Вопрос задан
  • 1045 просмотров
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
А так будет Петя.
let name = "Вася";
function sayHi(name) {
  alert(name);
}

setTimeout(function() {
  let name = "Петя";
  sayHi(name);
}, 1000);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
let name = "Вася"; // переменная в области видимости window
function sayHi() {
  alert(name);
}

setTimeout(function() { // анонимная функция
  let name = "Петя"; // переменная видна только внутри этой анонимной функции
  sayHi();
}, 1000);
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
let name = "Вася";
function sayHi() {
alert(name);
}

setTimeout(function() {
name = "Петя";
sayHi();
}, 1000);


потому что разные области видимости
Ответ написан
Комментировать
@Zzzz9
Почитай про область действия переменных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы