我在看一些代码的朋友做了和整个这条线,我认为是(简化的例子)错误绊倒..为什么仍然执行后用分号表示for循环?
for (g = 0; 10 > g; g++); {
alert(g);
}
但是它仍然执行,并提醒“10”。为什么是这样?这是一个目的建立在JavaScript功能?
我在看一些代码的朋友做了和整个这条线,我认为是(简化的例子)错误绊倒..为什么仍然执行后用分号表示for循环?
for (g = 0; 10 > g; g++); {
alert(g);
}
但是它仍然执行,并提醒“10”。为什么是这样?这是一个目的建立在JavaScript功能?
你g
变量是内全局上下文,所以它可以在for
循环之外访问。 循环完成了它的工作,并将g
增加了10次。
两个{}
表示JavaScript中的一个块,不会导致任何错误。
编辑:由于未定义g
变量,它不会在没有for
循环的情况下发出警报。
据我知道这仅仅是语言的句法特征。基本上,JavaScript会忽略该分号。
编辑:对不起,误读你的文章。如果你的意思是你只收到一次警报,那么你基本上有一个空循环执行十次,然后是一个包含警报执行一次的代码块。
Accolades({...})可以绕过任何代码块,而不依赖于for循环等构造。
我很确定Javascript不会忽略它们,但它们被认为是可选的。 –
JavaScript当然不会忽略分号。查看其他答案。 – nnnnnn
当然不是。没有分号,程序的行为将会非常不同。 –
分号实际上是在没有代码块的情况下运行循环。所以,你的代码主要有两个部分,
variable g
至10,g
(现在等于10)一次。你的循环运行10次,但不会警告任何事情,因为你已经把;
你得到警报是唯一一次,因为该声明以外的for循环
';'在这里结束循环,并且由于循环已经执行,所以你只能得到'10'一次。 '{}'只是创建一个代码块。 – Teemu
其警告你只有一次正确的... –
你这是我的想法..但删除for循环和分号和括号内不执行。 – user1020317