1

Почему внешняя глобальная переменная var value не меняется на true? Спасибо!

var value = 0;

function f() {
  if (1) {
    value = true;
  } else {
    var value = false;
  }
  alert( value );
}

f();
Lex
  • 459

1 Answers1

4

Если вкратце, то в 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

и

JavaScript и «поднятие» переменных и объявлений функций