有人可以解释为什么这个for循环打印出这个特定的模式?

时间:2016-06-30 21:41:43

标签: javascript loops for-loop

我以为我对for循环有了很好的理解,但是现在我已经开始尝试使用for循环来循环模式,事情变得更加混乱。例如,我知道以下代码将打印出来:

for (var line = “#”; line.length < 8; line += “#”) console.log(line);

输出将是:

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

到目前为止,这是我对此循环的理解:

  1. 首先,通过创建变量“line”来初始化循环,以存储仅为一个字符的值“#”。
  2. 接下来,“line.length&lt; 8”检查存储在变量“line”中的字符串的长度是否小于8个字符长。
  3. 第三部分“line + =”#“”通过为line.length&lt; 8为真的每次迭代添加“#”来更新存储在行变量中的值。
  4. 为循环的每次迭代更新字符串的长度(因此line.length),因为每次都会添加“#”值。
  5. 有人可以向我解释为什么#会被添加一次,然后是两次,然后是三次等等。从我对(不正确)的理解,我一直认为它会是这样的:

    #1
    #2
    #3
    

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可能有助于您理解。