Chrome调试器显示错误值

时间:2018-09-06 10:13:28

标签: javascript google-chrome for-loop google-chrome-devtools

我在Chrome Ubuntu(版本68.0.3440.106 64位)上调试我的js代码,我注意到调试器给了我错误的值,即使我通过添加监视表达式条目来监视该值也是如此。

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 :(得分:0)

使用var关键字声明的变量不能具有Block Scope。

在块{}中声明的变量可以从该块外部访问。

示例

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

ES2015 JavaScript之前没有Block Scope。

用let关键字声明的变量可以具有Block Scope。

在块{}中声明的变量不能从该块外部访问:

示例

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

从W3schools ofc毫无问题地复制

答案 1 :(得分:0)

那太奇怪了。当控制台代码段被触发时,我得到了这个。 enter image description here

是可见性的任何属性,是任何observable属性(例如KO可观察到的属性)。调试器可能进入了可观察的属性,即功能,超出了范围。由于所有内容都在一行中,因此您可以看到调试器正在执行单个命令。请尝试将线分成多行,以查看其行为。