Задать вопрос
iDennis
@iDennis

Почему это не работает?

Почему это работает так?

var s=3;

function f(){
    alert(s);     // undefined
    {var s;}   
}

f();
  • Вопрос задан
  • 2319 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@YNile
JS Developer
Потому что в вашей функции создается своя локальная переменная s, которая ничему не равна. Вот и undefined.

Но даже если вместо {var s;} написать {var s = 1000;}
В алерте все-равно будет undefined, тк на момент вызова переменная не присвоена. Читайте теорию. Это обычное поведение
Ответ написан
Комментировать
shqn
@shqn
Это называется variable hoisting.

Допустим ваш код был бы таким:

var foo = "bar";
var baz = function() {
    alert(foo);
    var foo = "bar2";
};
baz();


, то выполнялся бы он так:

var foo = "bar";
var baz = function() {
    var foo; // Переменная "всплыла"
    alert(foo);
    foo = "bar2";
};
baz();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.
В JavaScript все объявлённые переменные как бы помещаются в начало области видимости.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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