[英]if without curly braces
我有這段代碼生成素數列表。
<script>
var num = prompt("enter limit")
for(i = 2; i < num; i++)
{
if((i % 2 == 0 || i % 3 == 0))
continue;
document.write(i + " is a PRIME")
}
</script>
我的問題是:為什么下面的以下代碼無法運行; if語句中添加了花括號。
<script>
var num = prompt("enter limit")
for(i =2; i < num; i++)
{
if((i % 2 == 0 || i % 3 == 0))
{
continue;
document.write(i + " is a PRIME")
}
}
</script>
該if
語句使連接到它的條件就可以了測試條件的一個聲明。 在你的情況下, 一個說法是continue
。
使用花括號時,您將在if
語句中附加一個語句 ,該語句將其他語句組合在一起。
正確*縮進的原始代碼為:
var num = prompt("enter limit")
for (i = 2; i < num; i++) {
if ((i % 2 == 0 || i % 3 == 0))
continue;
document.write(i + " is a PRIME")
}
同樣,如您所見, if
僅附加了continue
語句。
如果要使用block語句,則continue
即可保持相同的含義:
var num = prompt("enter limit")
for (i = 2; i < num; i++) {
if ((i % 2 == 0 || i % 3 == 0)) {
continue;
}
document.write(i + " is a PRIME")
}
* (縮進代碼有很多“正確”的方法。但是,如果您想使代碼清晰,則確實需要使用其中一種 ,而您在問題中沒有使用過。)
您的解釋有些錯誤。 正確的解釋如下
if((i % 2 == 0 || i % 3 == 0)) {
continue;
}
document.write(i + " is a PRIME")
因為if
時沒有大括號,則僅執行if
語句之后的代碼,因此我假設您只想在if
語句中continue
執行。 為了修復您的代碼,您需要在if
條件之外取出document.write
語句。
var num = prompt("enter limit")
for (i = 2; i < num; i++) {
if ((i % 2 == 0 || i % 3 == 0)) {
continue;
}
document.write(i + " is a PRIME");
}
如果您編寫如下的if
語句
if(YOUR_CONDITION_HERE)
continue; //only this will be considered in the `if` statement
但是如果你寫成
if(YOUR_CONDITION_HERE) {
continue; //this will be considered inside the if statement and also other code which is inside the curly braces.
}
您的代碼可以運行; 它只是不產生任何輸出。 讓我們看一下相關代碼:
if((i % 2 == 0 || i % 3 == 0))
{
continue;
document.write(i + " is a PRIME")
}
如果i
不滿足條件語句的要求,則代碼執行不會在花括號之間輸入代碼塊。 對於這種情況足夠簡單的解釋。 但是,當它確實進入代碼塊時,它遇到的第一條語句是:
continue;
這將導致循環繼續進行,而無需考慮代碼塊中的任何其他語句。 這就是為什么將花括號放在沒有任何輸出的原因。
正如其他人所述,您只需要在代碼中消除那些特殊的花括號即可,如第一個示例所示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.