我正在从Marijn Haverbeke的Eloquent Javascript一书中学习Javascript,第二章末尾有练习(Program Structure)。编写一个循环,对console.log进行七次调用,输出以下三角形:
#
##
###
####
#####
######
#######
我尝试解决它就像使用for循环一样。
var hash = "#";
for(counter = 0; counter < 8; counter ++)
{
hash = hash + "#";
console.log(hash);
}
问题是它显示没有显示所需输出的第一行,我该如何获得?
我非常感谢任何解决方案,特别是如果它有一点解释。
答案 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 关键字,因为它引入了块作用域,使我们能够编写干净且不易出错的代码。