【问题标题】:Can someone explain why this this for loop prints out this specific pattern?有人可以解释为什么这个 for 循环会打印出这个特定的模式吗?
【发布时间】:2016-06-30 21:41:42
【问题描述】:

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

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

输出将是:

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

这是我目前对这个循环的理解:

  1. 首先,通过创建一个变量“line”来初始化循环,以存储只有一个字符的值“#”。
  2. 接下来,“line.length
  3. 第三部分“line +=”#””更新存储在 line 变量中的值,方法是为 line.length
  4. 每次循环迭代都会更新字符串的长度(因此 line.length),因为每次都会添加一个“#”值。

有人可以向我解释为什么 # 被添加一次,然后是两次,然后是三次等等。根据我的(不正确的)理解,我一直认为它看起来像:

#1
#2
#3

等等

【问题讨论】:

  • 不知道为什么人们不赞成你,这似乎是一个有效的问题
  • 您认为"#" 在一次迭代中被添加超过一次?
  • 第一个迭代日志#第二个##第三个###...因为每次调用console.log都会在一个新行中打印。
  • 你能帮我们解释一下为什么你认为它每次都会打印一个#吗?也许向我们展示每次迭代之前/之后 line 的值,以及输出
  • 我真的不确定你对这个循环的工作原理有什么不明白的地方。您的第三点已经完美地解释了它:“[t]第三部分 line += "#" 通过为每次迭代添加 "#" 来更新存储在 line 变量中的值”。

标签: javascript loops for-loop


【解决方案1】:

看来你自己解释得很好。

3.第三部分“line +=”#””更新存储在 line 变量中的值 > 通过为 line.length

每次通过循环时,都会将一个额外的# 连接到字符串的末尾。它以#开头,然后是##,然后是###。

当我们打电话时

console.log(line);

它只是打印字符串本身,它与字符串的长度或任何行号无关。

在每次传递开始时,都会检查字符串的长度。在这种情况下,长度只是字符串中有多少个#。

【讨论】:

    【解决方案2】:

    在for循环中,有3条语句,用分号隔开。

    正如您正确识别的那样,第一条语句是初始化。

    第二个语句是一个条件。这在每次迭代之前都会检查,如果条件为真,将执行循环代码(在本例中为 console.log)。

    最后一条语句在每次迭代后执行。

    在您的循环中,line 被初始化为“#”。然后,它检查是否line.length < 8。既然是这样,就会调用console.log。然后,执行line += "#",将“#”添加到行尾。此时,line"##"。然后它会检查是否line.length < 8,等等,直到条件不成立。

    This article 可能有助于您的理解。

    【讨论】:

      【解决方案3】:

      var Line 在整个循环中持续存在,所以如果你有##,循环再次添加#,你最终会得到###。在这种情况下,您在一个字符串上调用 .length ,它会为您提供单个字符的字符串长度。

      所以本质上你要求循环做的是在行中附加一个 # 直到有 8 个并停止。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-16
        • 2022-01-10
        • 1970-01-01
        • 2021-10-10
        • 2019-09-11
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        相关资源
        最近更新 更多