Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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/9/java/354.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 for循环和while循环的真正区别是什么?_Javascript_Java_C++ - Fatal编程技术网

Javascript for循环和while循环的真正区别是什么?

Javascript for循环和while循环的真正区别是什么?,javascript,java,c++,Javascript,Java,C++,for循环和while循环之间有什么区别 我不是问语法,也不是问每个循环是如何工作的,也不是问do是一个出口控制的循环 我需要知道的是,创建for loop必须有一个原因,而while loop如果完成的过程相同,那么就不需要另一个原因,我正在寻找这个原因 >不包括 do,,我在讨论代码> > 代码>,而是while的一部分。 < P>专门针对C++语言: 基本上: int i; for (i = 0; i < 10; i++) { printf("%d\n", i); } 但是

for
循环和
while
循环之间有什么区别

我不是问语法,也不是问每个循环是如何工作的,也不是问do是一个出口控制的循环

我需要知道的是,创建for loop必须有一个原因,而while loop如果完成的过程相同,那么就不需要另一个原因,我正在寻找这个原因


<> >不包括<代码> do,,我在讨论<>代码> > <>代码>,而是while的一部分。

< P>专门针对C++语言:

基本上:

int i;
for (i = 0; i < 10; i++)
{
  printf("%d\n", i);
}
但是使用
while
时,如果循环变量的范围仅限于循环本身,则无法获得与此等效的结果:

可能是这样的,这是非法的C++:

while (int i < 10)
{
   printf("%d\n", i);
   i++;
}

for
对于while来说只是一种语法糖,如果不是说这两者都可以通过
goto
语句以及许多其他语言结构来实现

历史原因是使您的程序代码看起来更具可读性

  • 当您有某种计数器变量需要在每次循环迭代中递增/递减时,应该使用For循环。如果在这种需求中使用while循环,那么将使用一行额外的代码来递增/递减计数器
  • 当您有一些条件语句时,应该使用循环,循环应该继续,直到条件为真,一旦条件变为假,循环就会终止
  • while循环可以用作for循环的替换,但for循环不能用于替换while循环

  • for循环可以转换为while循环,但不一定相反。主要区别在于,从某种意义上讲,将某些逻辑理解为“对每个值执行”与“当某些条件为真时”,可能更容易或更自然。这就是全部。(您当然不需要两者兼而有之——例如,golang只有for循环)。——当您有某种计数器变量需要随着每次循环迭代而递增时,应该使用for循环--当你有一些条件语句时,应该使用循环,循环应该继续,直到条件为真,一旦条件为假,循环就会终止。关于编程的这些基本元素,已经有很多书写过了。简单地说,
    for
    循环专门用于运行元素列表,而
    while
    则简单地说:dox while true。这里有一篇文章让您开始学习:对于javascript,在引擎内部,For循环被重写为while循环IIRC。但是JS中有很多语法选择,这只是为了方便程序员。当条件为真时,应该使用“while”循环(因此得名…)。您可以编写模仿“for”循环的“while”循环,但这只是编写自混淆代码。“for”循环应始终具有固定的迭代次数。你可以编写“for for”循环,它模仿“while”循环,但这只是写自己的模糊代码。“for循环不能用来替换while循环”:你确定吗?至少在C++ <代码>(条件){doiAththTeg();}与“(?);{ dothOnththin())完全相同,} /<代码> @ JabBrWokky:是的,但这是一个非标准的、全方位的糟糕的“for”循环用法。@DaveDoknjas我的意思是答案的第3点实际上是错误的,你可以将while(){blahblah}封装在{}中,得到与(int x..{int I=0;而(I<10){…}相同的结果,你是对的,编辑。但你的解决方案很麻烦。确切地说,这就是我所说的——“for”是一种语法上的糖分。您可以以各种形式避免它,但您的代码将变得丑陋。
    for (int i = 0; i < 10; i++)
    {
      printf("%d\n", i);
    }
    
    while (int i < 10)
    {
       printf("%d\n", i);
       i++;
    }
    
    {
      int i = 0; while (i < 10)
      {
        printf("%d\n", i);
        i++;
      }
    }
    
      int i = 0;    
    startfor:
      if (!(i < 10)) goto endfor;
        printf("%d\n", i);
        i++;
      goto startfor;
    endfor:
      ;