为什么在它仍然执行后带分号的for循环?

时间:2013-08-27 11:31:32

标签: javascript

我正在查看朋友所做的一些代码并偶然发现了这一行,我认为这是一个错误(例如简化)..

for (g = 0; 10 > g; g++); {

    alert(g);
}

然而它仍然执行,并警告“10”。为什么是这样?这是javascript中的专用功能吗?

JS fiddle

4 个答案:

答案 0 :(得分:4)

您的g变量位于全局上下文中,因此可以在for循环之外访问它。 循环完成了它的工作,并增加了g 10次。
两个{}表示JavaScript中的一个块,不会导致任何错误。

修改:没有for循环,它没有提醒任何内容,因为g变量未定义。

答案 1 :(得分:2)

半冒号实际上运行没有{}代码块的循环。所以你的代码基本上有2个部分,

  1. 以10个步骤将variable g更新为0到10,
  2. 打印出g(现在等于10)一次。

答案 2 :(得分:1)

你的for循环运行了10次,但是因为放了;

,所以不会发出任何警告

由于for循环之外的语句

,您获得的警报只有一次

答案 3 :(得分:-2)

据我所知,这只是该语言的语法功能。基本上,javascript忽略了分号。

编辑:抱歉,误读了你的帖子。如果你的意思是你只收到一次警报,那么你基本上是一个执行十次的空循环,然后是一个包含执行一次警报的代码块。

Accolades({...})可以绕过任何代码块,与for循环等构造无关。