Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在循环内重新声明块范围的循环变量_Javascript - Fatal编程技术网

Javascript 在循环内重新声明块范围的循环变量

Javascript 在循环内重新声明块范围的循环变量,javascript,Javascript,我最近遇到一段代码,它让我对循环中用let关键字声明的块范围变量感到困惑 考虑以下代码段: 对于let i=0;irun;fn;{ 让我们跑=假; }这不是同一个范围。每次迭代都是不同的作用域。@Taplar是的,我知道,但据我所知,我们不应该在循环中重新声明i。如果它是不同的作用域,它如何重新声明?你忽略了你刚刚同意的前提,这是一个不同的范围。你是在寻找一个带有规范引用的答案,还是…?@Ry-我知道循环的每个迭代都有不同的范围。我想,我对我是否为let I=0声明了变量感到困惑;i“是的”?

我最近遇到一段代码,它让我对循环中用let关键字声明的块范围变量感到困惑

考虑以下代码段:

对于let i=0;i<10;i++{ 让我=‘你好’; console.logi; } 正如我们在这里看到的let定义

let语句声明一个块作用域局部变量

for (let i = 0; i < 10; i++) {
    //blah blah blah
    let i = 'Hello'
}
如果我们回到let定义,这一点很清楚,因为let语句是块范围的

希望这有助于解决您的问题。

为什么

forlet fn==>run;fn;{ 让我们跑=假;
}这不是同一个范围。每次迭代都是不同的作用域。@Taplar是的,我知道,但据我所知,我们不应该在循环中重新声明i。如果它是不同的作用域,它如何重新声明?你忽略了你刚刚同意的前提,这是一个不同的范围。你是在寻找一个带有规范引用的答案,还是…?@Ry-我知道循环的每个迭代都有不同的范围。我想,我对我是否为let I=0声明了变量感到困惑;i<10;i++是在循环体中的另一个作用域中声明的?不过,规范中关于for循环的复杂声明内容有不同的用途。并不是说我真的知道一个更好的方法来回答这个问题……“我[认为]你不能在同一个范围内重新声明块作用域变量”->“是的”?我不确定你想通过你问题中的代码示例告诉我什么。第一个不起作用,因为时间死区。虽然,你答案的最后一行——每个声明都在它自己的范围内,for循环的主体也有它自己的范围——已经消除了我的困惑。@Yousaf,呃,实际上我把它和,应该在基于错误假设的答案之前检查规范。编辑。
let i = 0
do {
    // blah blah blah
    let i = 'Hello'
} while(i ++ < 10);