如何让这个基本循环练习的第一部分正确?

时间:2016-02-19 20:28:27

标签: javascript

我正在从Marijn Haverbeke的Eloquent Javascript一书中学习Javascript,第二章末尾有练习(Program Structure)。编写一个循环,对console.log进行七次调用,输出以下三角形:

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

我尝试解决它就像使用for循环一样。

var hash = "#";

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

   hash = hash + "#";

   console.log(hash);

}

问题是它显示没有显示所需输出的第一行,我该如何获得?

我非常感谢任何解决方案,特别是如果它有一点解释。

6 个答案:

答案 0 :(得分:12)

自从你刚刚开始以来,工作很顺利。

你几乎得到了它。只需将变量声明为空字符串。

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

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

这样,当您添加到循环内的“hash”变量时,它没有来自变量声明的额外“#”。

答案 1 :(得分:6)

您的代码正在执行&#39;从上到下&#39;。

在你的'for循环&#39;第一次迭代在已经声明的var散列中添加一个#,这使得它##并且它被记录了#39;通过控制台。

您需要做的就是在hash = hash +&#34;#&#34;之前放置console.log(hash)。

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

这将确保在第一次迭代中,首先是#&#39;#&#39;将被记录&#39;然后才哈希=哈希+&#34;#&#34;将开始工作:)

答案 2 :(得分:4)

您立即将哈希连接到它。在循环之前注销初始值。

console.log(hash);
for ...

答案 3 :(得分:1)

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

像这样初始化

hash = '';

你很高兴.. :))

答案 4 :(得分:0)

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

答案 5 :(得分:0)

既然你已经声明并初始化了变量,你必须先记录它,然后才能像这样使用自增或自减运算符。

let triangle = '#';
for(counter = 0; counter < 7; counter ++)
{
   console.log(triangle);
   triangle += "#";
}

这样 console.log() 将记录第一个散列而不是增加它以记录其余的散列。您还应该使用 let 关键字而不是 var 关键字,因为它引入了块作用域,使我们能够编写干净且不易出错的代码。