题目看起来直截了当,但这不是我要问的。请尝试以下示例
for(let i=0; i<5; i++){
//console.log(i);
let i=5
console.log(i);
}
这个例子是有效的,我的问题是如何在for循环中声明另一个具有相同标识符的变量。
我真的很困惑,这是怎么回事?
发布于 2018-05-09 03:24:06
有关for循环中let的语义,请参阅Explanation of let and block scoping with for loops。
如何在
for循环中声明另一个具有相同标识符的变量?
这是因为你的for循环有一个块语句作为它的主体,在那里你可以声明你自己的块范围的变量,隐藏来自父范围的变量。
发布于 2018-05-09 03:14:15
在下面的示例中,您将i的值设置为5,这样循环就结束了,因为这是循环i<5的条件。因此,循环再次运行的条件为false
for(let i=0; i<5; i++){
//console.log(i);
i=5
console.log(i);
}
在您的第一个示例中,循环继续,因为let i =5在for循环作用域中被视为一个单独的变量
发布于 2018-05-09 03:18:35
我认为下面的代码会消除你所有的疑虑,它都是关于scope的,你不能在相同的scope中重新定义相同的变量,但你可以在嵌套的scope中定义
在您的代码中也发生了同样的事情,for有自己的作用域,在for中意味着
for { //inside this } is nested scope of `for`.
{
let a = "a";
console.log(a);
{
let a = "b";
console.log(a);
}
console.log(a);
}
https://stackoverflow.com/questions/50240765
复制相似问题