2013-08-27 94 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循環

相關問題