Локальная переменная Javascript переопределяет глобальную переменную? - PullRequest
0 голосов
/ 25 апреля 2018
var x = 3;

if(1==1){
    if(2==2){
        var x= 5;       
    }
}

document.write(x); // outputs 5

Итак, я провел несколько тестов, чтобы лучше понять концепцию локальной и глобальной области видимости.Я думал, что объявление x с ключевым словом var создает локальную переменную и игнорирует любую переменную с таким же именем в родительской области.Под игнорированием я подразумеваю, как я могу изменить переменную x, не затрагивая ту же переменную в области видимости над ней.Но, видимо, мое понимание определения js-переменных неверно.не могли бы вы объяснить, почему он так себя ведет?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

В фигурных скобках ({...}) не создается область действия для var в JavaScript. Поэтому, когда вы объявляете любую переменную (x) с тем же именем (x) на стороне {...}, она не создает никакой новой переменной, но фактически переопределяет ранее объявленную переменную.

0 голосов
/ 25 апреля 2018

var объявляет локальную переменную внутри функции. Для локальных переменных области блока используйте let.

var x = 3;
if(1==1){
    if(2==2){
        let x = 5;
    }
}
console.log(x); // prints 3
...