【问题标题】:(javaScript) value in and out of 'for loop'(javaScript)值进出'for循环'
【发布时间】:2020-07-11 02:13:35
【问题描述】:
我是 javaSCript 的初学者,我只是想知道为什么当它被称为循环“内部”和“循环外部”时,结果会有所不同。
for (var i = 0; i < 5; i++) {
console.log(i);
// prints 0 1 2 3 4
}
console.log(i);
// prints 0 1 2 3 4 5
【问题讨论】:
标签:
javascript
loops
for-loop
console
【解决方案1】:
因为for循环的步骤是:
- 1 - 定义一个变量,
- 2 - 检查条件,
- 3 - 在循环内运行代码,
- 4 - 并将循环变量值增加1,
但是!在定义变量后和第一个循环之后,它会忽略第一个参数var i = 0,它会将循环变量加1,并且检查条件,为什么?因为在for循环中,最后要做的就是将循环变量加1,
所以最后一个循环会将循环变量加1并检查条件,
简单地说:变量已经通过循环变为 5,因为在第一个循环之后它将变量增加 1 并检查条件
希望我的回答对你有用!
【解决方案2】:
这就是 JS 中的 var 的工作方式,也是所有语言中的 for 循环的工作方式。
当你使用 var 关键字声明一个变量时,它被提升到函数范围,或者如果不在函数内部,它是全局的。这使您可以在 for 循环范围之外访问 var。尝试将 var 更改为 let 看看会发生什么。
其次,由于您的条件i < 5,您在 for 循环中看不到 5 打印。 i++ 导致 'i' 从 4 变为 5,这会破坏 for 循环条件并且不会打印 'i'。
最后,for 循环外的 console.log(i) 应该只打印 5,因为那是 i 的值,而不是
console.log(i);
// prints 0 1 2 3 4 5
// should print 5
【解决方案3】:
在循环内部,它记录从0 到4 的数字。最后一个i++ 将i 设置为5,循环停止,因为i < 5 不再为真。然后循环后的console.log(i) 记录这个值。
【解决方案4】:
在循环执行期间,条件 i
for (var i = 0; i < 5; i++) {
console.log("inside loop: " + i);
// prints 0 1 2 3 4
}
console.log("outside loop: " + i);
// prints just 5