2013-08-17 12 views
1

我正在學習JS。在書中是通過使用for關鍵字而不是while來進行編碼的練習。 While始終是「原始示例」。所有類型的例子都將使用循環。FOR類型循環中的大括號意外地改變了代碼的結果

該實施例將打印#符號進行看起來像三角形:

# 
## 
### 
#### 
##### 
###### 
####### 
######## 
######### 
########## 

[代碼#1]二手while

var line = ""; 
var counter = 0; 
while (counter < 10) { 
    line = line + "#"; 
    print(line); 
    counter = counter + 1; 
} 

[代碼#2]相同,使用for

var line = ""; 
for (var counter = 0; counter < 10; counter = counter + 1) { 
    line = line + "#"; 
    print(line); 
} 

在這兩種情況下都使用大括號。



在其它示例中,我會提高2〜10。
功率[代碼#3]通過while

var result = 1; 
var counter = 0; 
while (counter < 10) { 
    result = result * 2; 
    counter = counter + 1; 
} 
show(result); 

[代碼#4]for相同:

var result = 1; 
for (var counter = 0; counter < 10; counter = counter + 1) 
    result = result * 2; 
show(result); 



  • 爲什麼括號不是[代碼#4]使用,並且沒有他們的工作呢?

  • 當我不使用大括號時,爲什麼[code#2]只打印三角形的最後一行(##########)?當我使用大括號時,會根據需要打印整個三角形。

+0

//因爲我沒有10個聲望點,所以我可以發佈最多兩個鏈接並且不能發佈圖片。這裏是我的問題的第二部分// http://prntscr.com/1ltren 所以我用它作爲這個:http://prntscr.com/1ltrok 但它只打印了三角形的最後一行。 然後我試圖把這樣的括號放在裏面:http:// prntscr。com/1lts0m ,它的工作。 我想得到解釋爲什麼在一個案件大括號不需要正確的結果,但在其他情況下,他們是必要的。 謝謝。 – Rapier

+0

把原始文本放入問題而不是屏幕截圖(幫助搜索和持久化問題)好得多。我已經完成了前兩個,你可以完成剩下的工作。 – 2013-08-17 19:43:06

+0

這個網站格式化很難使用/學習。我正在嘗試,但我不會花一整天的時間,但我還有更重要的事情要做。抱歉。我不是很傲慢,但我真的不舒服:( – Rapier

回答

4

始終使用大括號。

當你不使用大括號,JS引擎自動膠水下一條語句for後,以補充它,所以對上市#2的代碼基本就變成了:

var line = ""; 
for (var counter = 0; counter < 10; counter = counter + 1) { 
    line = line + "#"; 
} 
print(line); 

而且只打印最後一行。

對於if,elsewhile也指定了相同的行爲。

+0

不是「下一行」,而是下一個*聲明*。它可能在同一行,或者在下一行可能有多個語句。 – Bergi

+0

你是對的,謝謝。 – c69

+0

因爲';'分隔語句。 – c69