Почему внешняя глобальная переменная var value не меняется на true? Спасибо!
var value = 0;
function f() {
if (1) {
value = true;
} else {
var value = false;
}
alert( value );
}
f();
Почему внешняя глобальная переменная var value не меняется на true? Спасибо!
var value = 0;
function f() {
if (1) {
value = true;
} else {
var value = false;
}
alert( value );
}
f();
Если вкратце, то в JS есть такая магическая вещь, как поднятие переменных. Интерпретатор JavaScript всегда незаметно для нас перемещает (поднимает) объявления функций и переменных в начало области видимости.
Код
function test() {
someFunction();
var x = 1;
}
на самом деле интерпретируется так:
function test() {
var x;
someFunction();
x = 1;
}
В вашем случае происходит тоже самое, где область видимости одной переменной value является функция и в итоге происходит работа с локальной переменной.
Немного информации на тему есть https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Grammar_and_types
и
var valueв самый верх и является локальной переменной для всей функции... и меняется именно она – Алексей Шиманский Jul 18 '17 at 21:23