Отладчик Chrome показывает неверные значения - PullRequest
0 голосов
/ 06 сентября 2018

Я отлаживал свой код js в Chrome Ubuntu (версия 68.0.3440.106, 64 бита), и я заметил, что отладчик выдает мне неправильные значения, даже если я наблюдаю значение, добавляя запись выражения наблюдения.

for (let i = 0; i < visibility.show.or.length; ++i) {
   const currentVisibilityContext = visibility.show.or[i];
}

i can not be undefined

, но если я использую var вместо let, он будет работать нормально

for (var i = 0; i < visibility.show.or.length; ++i) {
   const currentVisibilityContext = visibility.show.or[i];
}

Может ли кто-нибудь объяснить мне это поведение? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Это так странно. Я получаю это, когда снимают консольный фрагмент. enter image description here

Любое из свойств видимости, свойство observable (например, наблюдаемое КО), случайно. Вероятно, отладчик вошел в наблюдаемое свойство, а именно, функция и выходит за рамки. Поскольку все в одной строке, вы увидите, что отладчик выполняет одну команду. Пожалуйста, попробуйте разбить строку на несколько строк, чтобы увидеть, как она себя ведет.

0 голосов
/ 06 сентября 2018

Переменные, объявленные с ключевым словом var, не могут иметь блок Scope.

Переменные, объявленные внутри блока {}, доступны вне блока.

Пример

{ 
    var x = 2; 
}
// x CAN be used here

До ES2015 JavaScript не имел Block Scope.

Переменные, объявленные с ключевым словом let, могут иметь блок Scope.

Переменные, объявленные внутри блока {}, недоступны извне блока:

Пример

{ 
    let x = 2;
}
// x can NOT be used here

скопировано без проблем из W3schools of

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...