我在看一些代碼的朋友做了和整個這條線,我認爲是(簡化的例子)錯誤絆倒..爲什麼仍然執行後用分號表示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