2016-02-19 66 views
14

我在書中學習Javascript,由Marijn Haverbeke提供,第二章(程序結構)的末尾有練習。寫一個循環,使console.log七個調用輸出以下三角形:如何獲得此基本循環練習的第一部分是否正確?

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

我試圖解決它像使用for循環。

var hash = "#"; 

for(counter = 0; counter < 8; counter ++) 
{ 

    hash = hash + "#"; 

    console.log(hash); 

} 

的問題是它的顯示不顯示所需的輸出的第一行,我怎麼得到的?

我會非常感謝任何解決方案,尤其是如果它帶有一點解釋。

+4

這是那幾個小白的問題,我很願意,理由是你問純粹給予好評一個它正確。它清楚地顯示了問題,問題,嘗試以及實際產出與預期的關係。請不要冷靜地問好問題 - 如果需要的話關閉,但不要低估。 –

+1

歡迎來到JS船員。絕對接受gimbel0893的回答。將變量聲明爲空字符串是要走的路。 – Trasiva

+0

幹得好,@Mohil,歡迎來到StackOverflow!一個小建議:通常情況下,你希望循環變量是本地的,所以'for(var counter ...'會更好。 – georg

回答

6

您的代碼正在「頂部到底部」執行。

在你的'for循環'中,第一次迭代將#添加到已經聲明的var哈希中,並使得它##,並且這被控制檯'記錄'。

您只需將console.log(hash)放在hash = hash +「#」之前就可以了。

console.log(hash); 
hash = hash + "#"; 

這將確保在第一次迭代,首先一個「#」會「記錄」,然後才哈希散列= +「#」就會開始工作:)

+5

但是我想補充一點,也許你應該嘗試從一個空字符串開始,就像'count'應該從零開始,它可以節省很多這樣的'事件':) –

4

你立即連接一個散列到它。在循環之前註銷初始值。

console.log(hash); 
for ... 
+0

或初始化散列爲空 –

+0

這也行得通,是的。 –

+0

是的,或者這也會起作用 – gimbel0893

12

不錯的工作,因爲你剛剛開始。

你幾乎明白了。只需將變量聲明爲空字符串即可。

// this is the line that needs to be changed 
var hash = ''; 

for(....) { 
    hash += "#"; 
    console.log(hash); 
} 

爲您添加到循環內的「哈希」變量通過這種方式,它並沒有從變量聲明額外的「#」。

1

我可能會遲到,但通過這樣做,你正在浪費一個角色(第9個角色)。

初始化這樣

hash = ''; 

,你是好去.. :)

0
var grid = "#" 
for(i = 1; i < 8; i++){ 
    console.log(grid.repeat(i)); 
}