我以为我对for循环有了很好的理解,但是现在我已经开始尝试使用for循环来循环模式,事情变得更加混乱。例如,我知道以下代码将打印出来:
for (var line = “#”; line.length < 8; line += “#”)
console.log(line);
输出将是:
#
##
###
####
#####
######
#######
到目前为止,这是我对此循环的理解:
有人可以向我解释为什么#会被添加一次,然后是两次,然后是三次等等。从我对(不正确)的理解,我一直认为它会是这样的:
#1
#2
#3
等
答案 0 :(得分:1)
好像你自己解释得很好。
3.第三部分“line + =”#“”更新存储在行变量&gt;中的值。通过为line.length&lt; 8为真的每次迭代添加“#”。
每次循环时,都会将一个额外的#连接到字符串的末尾。它以#开头,然后是##,然后是###。
当我们打电话时
console.log(line);
它只打印字符串本身,它与字符串的长度或任何行号无关。
在每次通过开始时,检查字符串的长度。在这种情况下,长度只是字符串中有多少#。
答案 1 :(得分:0)
var line在整个循环中持续存在,所以如果你有##并且循环再次添加#,你最终会得到###。在这种情况下,您在字符串上调用.length,它给出了单个字符中字符串的长度。
所以基本上你要求循环做的是将#添加到行直到有8个并且停止。
希望这有帮助
答案 2 :(得分:0)
在for循环中,有三个语句,用分号分隔。
第一个语句是初始化,正如您正确识别的那样。
第二个陈述是一个条件。在每次迭代之前检查它,如果条件为真,将执行循环代码(在本例中为console.log
)。
最后一个语句在每次迭代后执行。
在你的循环中,line
被初始化为“#”。然后,它检查是否line.length < 8
。因为它是,console.log
被称为。然后,执行line += "#"
,将“#”添加到行尾。此时,line
为"##"
。然后它将检查是否line.length < 8
,依此类推,直到条件不成立为止。
This article可能有助于您理解。