Javascript 以下程序是否在外部循环的第一次迭代中执行嵌套循环?

Javascript 以下程序是否在外部循环的第一次迭代中执行嵌套循环?,javascript,for-loop,Javascript,For Loop,在嵌套循环i=2和j=2的第一次迭代中。但是,嵌套循环的条件是j

在嵌套循环
i=2
j=2
的第一次迭代中。但是,嵌套循环的条件是
j
。这是否意味着不执行嵌套循环?发生了什么事

showPrimes(10);
函数showPrimes(n){
下一次:
for(设i=2;i}
如果素数应该为素数返回true,非素数返回false,那么当检测到非素数时,只需返回false即可。正如评论所指出的,您不需要两个循环就可以做到这一点。您可以简单地从2循环到n-1,尝试在没有余数的情况下进行除法。

嵌套循环不会在外部循环的第一次迭代中执行,即当
i==2
时。在外循环的第二次迭代中,我们有
i==3
,因此嵌套循环条件现在为
j<3
,因此它用值
j==2
计算一次。对于外部循环的第三次迭代,我们有
i==4
,因此嵌套循环的值2和3将被计算两次。等等


希望对您有所帮助-Carlos这里有一张图表,详细说明了您的课程流程:

+---+---+-------------------------------------------------------------+
|i | j |注释|
+---+---+-------------------------------------------------------------+
|2 | 2 |嵌套循环条件为false。因此,2是一个素数|
|3 | 2 | 3不能被2整除。让我们继续寻找|
|3 | 3 |嵌套循环条件为false。因此,3是一个素数|
|4 | 2 | 4可被2整除。因此,它不是质数|
|5 | 2 | 5不能被2整除。让我们继续寻找|
|5 | 3 | 5不能被3整除。让我们继续寻找|
|5 | 4 | 5不能被4整除。让我们继续寻找|
|5 | 5 |嵌套循环条件为false。因此,5是一个素数|
|6 | 2 | 6可被2整除。因此,它不是质数|
|7 | 2 | 7不能被2整除。让我们继续寻找|
|7 | 3 | 7不能被3整除。让我们继续寻找|
|7 | 4 | 7不能被4整除。让我们继续寻找|
|7 | 5 | 7不能被5整除。让我们继续寻找|
|7 | 6 | 7不能被6整除。让我们继续寻找|
|7 | 7 |嵌套循环条件为false。因此,7是质数|
|8 | 2 | 8可被2整除。因此,它不是质数|
|9 | 2 | 9不能被2整除。让我们继续寻找|
|9 | 3 | 9可被3整除。因此,它不是质数|
+---+---+-------------------------------------------------------------+

希望这能解释为什么即使嵌套循环在
i=2
j=2
时不执行,程序仍能工作。好的,让我们分步骤解释这个嵌套循环:

  • 最初
    i=2
    j=2
    ,因此外部循环将执行,但嵌套循环将不执行。跳过内部循环它将打印
    2
    ,它位于主循环的末尾
    console.log(i)

  • 循环结束且
    i=3
    。这次
    j
    true
    所以嵌套循环开始

  • 在第一个嵌套循环期间
    i=3
    j=2

  • continue
    将不会执行
    i%j
    不是
    0
    ,因此它将结束并且
    j
    增加。现在
    i=3
    j=3
    和嵌套循环退出并打印
    3


  • 现在将执行
    i=4
    和嵌套循环,因为
    j=2
    j这两个嵌套循环的目的是什么。嵌套循环没有任何效果…函数showPrimes(n){nextPrime:for(let i=2;i语句?第一次迭代时不是这样。因此,
    2
    是一个素数。这并不能回答OP的问题。感谢您的解释,正如您在第4步中所说,j值为3,在第5步中,j值再次变为2。这是如何发生的?@Raghuram我添加了一个explanation@Raghuram
    i
    是外部for循环的本地。由于
    循环的外部
    没有结束,因此其值不会像
    j
    那样改变。但是
    j
    是内环的局部。内部循环是多次创建的,因此每次启动内部循环时,
    j
    的值都会被破坏并初始化为
    2
    。感谢我是js新手,似乎有很多东西需要学习,最后我理解了它,但我不理解的是,我的值从一开始就在增加,因为我++,为什么j值在几次迭代后会回落到2,这是因为在外循环的每次迭代开始时都显式地设置了
    j=2