如何获得此基本循环练习的第一部分是否正确?

问题描述:

我在书中学习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,欢迎来到*!一个小建议:通常情况下,你希望循环变量是本地的,所以'for(var counter ...'会更好。 – georg

您的代码正在“顶部到底部”执行。

在你的'for循环'中,第一次迭代将#添加到已经声明的var哈希中,并使得它##,并且这被控制台'记录'。

您只需将console.log(hash)放在hash = hash +“#”之前就可以了。

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

这将确保在第一次迭代,首先一个“#”会“记录”,然后才哈希散列= +“#”就会开始工作:)

+5

但是我想补充一点,也许你应该尝试从一个空字符串开始,就像'count'应该从零开始,它可以节省很多这样的'事件':) –

你立即连接一个散列到它。在循环之前注销初始值。

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

或初始化散列为空 –

+0

这也行得通,是的。 –

+0

是的,或者这也会起作用 – gimbel0893

不错的工作,因为你刚刚开始。

你几乎明白了。只需将变量声明为空字符串即可。

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

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

为您添加到循环内的“哈希”变量通过这种方式,它并没有从变量声明额外的“#”。

我可能会迟到,但通过这样做,你正在浪费一个角色(第9个角色)。

初始化这样

hash = ''; 

,你是好去.. :)

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