2013-08-27 64 views
1

我在看一些代码的朋友做了和整个这条线,我认为是(简化的例子)错误绊倒..为什么仍然执行后用分号表示for循环?

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

    alert(g); 
} 

但是它仍然执行,并提醒“10”。为什么是这样?这是一个目的建立在JavaScript功能?

JS fiddle

+8

';'在这里结束循环,并且由于循环已经执行,所以你只能得到'10'一次。 '{}'只是创建一个代码块。 – Teemu

+0

其警告你只有一次正确的... –

+0

你这是我的想法..但删除for循环和分号和括号内不执行。 – user1020317

回答

4

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

编辑:由于未定义g变量,它不会在没有for循环的情况下发出警报。

-2

据我知道这仅仅是语言的句法特征。基本上,JavaScript会忽略该分号。

编辑:对不起,误读你的文章。如果你的意思是你只收到一次警报,那么你基本上有一个空循环执行十次,然后是一个包含警报执行一次的代码块。

Accolades({...})可以绕过任何代码块,而不依赖于for循环等构造。

+0

我很确定Javascript不会忽略它们,但它们被认为是可选的。 –

+0

JavaScript当然不会忽略分号。查看其他答案。 – nnnnnn

+0

当然不是。没有分号,程序的行为将会非常不同。 –

2

分号实际上是在没有代码块的情况下运行循环。所以,你的代码主要有两个部分,

  1. 更新的10个步骤,从0 variable g至10,
  2. 打印出g(现在等于10)一次。
1

你的循环运行10次,但不会警告任何事情,因为你已经把;

你得到警报是唯一一次,因为该声明以外的for循环

相关问题