gpt4 book ai didi

javascript - 内部循环中没有初始化语句的嵌套 for 循环可防止外部循环在 JavaScript 中循环

转载 作者:行者123 更新时间:2023-12-03 02:24:13 26 4
gpt4 key购买 nike

var i = 0,
j = 0,
count = 0;
for (; i < 3; i++) {
for (; j < 3; j++) {
count++;
}
}
console.log(count);

为什么我得到3而不是9,我清楚地知道这取决于我是否在内循环中插入初始化语句j=0,我需要知道流量控制是如何发生的?

最佳答案

j 永远不会被重新初始化,因为它是在外部作用域中声明和初始化的,而不是在 for 循环创建的作用域中。

因此,描述数据流到 j 永远不会改变的点:

i = 0
j = 0
j = 1
j = 2
j = 3
i = 1

此时,j 仍然是 3,因此嵌套 for 循环永远不会计算其作用域语句,因此 i 继续递增到 3,循环结束。您的计数现在仍然是 3。传统上构建 for 循环的方式是由三个部分组成:

  1. 初始化迭代器,通常是一个从 0 开始的数字(但不一定如此,有很多用例首选另一个起点)
  2. 守卫条件,基本上是“评估我直到满足条件”
  3. 每次计算后运行的语句,通常会递增或递减迭代器

我在调用 ij 迭代器时采取了一些自由,因为这是一个加载术语,但它与简单示例中的任何术语一样好。

简而言之,通过不重新初始化 j,它会保留上次对外部 for 循环求值的最后分配的值。

关于javascript - 内部循环中没有初始化语句的嵌套 for 循环可防止外部循环在 JavaScript 中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com