我在Chrome Ubuntu(版本68.0.3440.106 64位)上调试我的js代码,我注意到调试器给了我错误的值,即使我通过添加监视表达式条目来监视该值也是如此。
for (let i = 0; i < visibility.show.or.length; ++i) {
const currentVisibilityContext = visibility.show.or[i];
}
但是如果我使用var
而不是let
会很好
for (var i = 0; i < visibility.show.or.length; ++i) {
const currentVisibilityContext = visibility.show.or[i];
}
有人可以向我解释这种行为吗? 非常感谢。
答案 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)