const OBJ = {
MINNI : 79,
TONU : 34,
RITU : 23,
}
for(let a in OBJ)
console.log(a,OBJ[a])
for(e of "abhi")
console.log(e)
现在 let 实际上从括号外执行阻塞的 scooped 变量.. 难道我们都没有被告知 let 不会对括号下的变量做出反应吗?如果没有循环,它会抛出变量未定义的错误。如果你有这个答案,请告诉我,因为我对这个很困惑
我期望 let 不会对被阻塞挖取的变量做出反应,是的,它通常不会,但是循环它正在执行块下的代码
当您在
let
(或for-in
,或for
)循环中使用for-of
时,变量的作用域是构成循环体的语句的作用域。在你的例子中,循环体是console.log(a,OBJ[a])
,所以a
在范围内并且使用它没有问题。
你似乎认为范围需要一个块作为循环体,但它不需要。这个循环:
for(let a in OBJ)
console.log(a,OBJ[a])
和这个循环一样:
for(let a in OBJ) {
console.log(a,OBJ[a])
}
就
a
的范围而言(以及几乎所有其他方面)。