【问题标题】:Can a condition in a loop be used without an initializer?可以在没有初始化程序的情况下使用循环中的条件吗?
【发布时间】:2021-07-12 12:10:06
【问题描述】:

作为 forwhile 循环中的条件,可以使用不带“i”的语句吗?

例如:

for (let i = 0 ; myArray.length =< 7; i++)

我希望循环一直运行直到满足我的条件,但不确定在不包含“i”的情况下是否可以实现。

【问题讨论】:

  • 你想做什么?

标签: javascript loops initializer


【解决方案1】:
for ( initiaizer; condition; increment) {
    body
}

等同于:

initializer 
while (condition) {
    body
    increment
}

您可以在每个中遵循相同的规则。这意味着初始化程序和增量实际上是可选的(for (; false; ) {} 是有效的)。创建和递增一个名为i 的变量只是一个有用的约定,没有特殊含义。

发明了 For 循环是为了在您希望基本上从一个数字计数到另一个数字的常见情况下简化 while 循环。如果你不这样做,while 循环可能会更好。

【讨论】:

  • for(;;){ break } - 条件也是可选的,它只需要手动跳出循环。
  • 没意识到,太好了!
  • 这很有帮助,谢谢!我咨询过的任何资源都没有提到它或包含一个没有 i 变量的示例。
  • For 循环有点奇怪,它们的结构只有在参考 while 循环时才有意义(()??? 中的分号)。大多数时候我更喜欢数组方法。
【解决方案2】:

试试

while (myArray.length <= 7) {

}

使用&lt;=,而不是=&lt;

【讨论】:

    【解决方案3】:

    【讨论】:

    • 谢谢!这实际上是我正在研究的地方,但是,到目前为止,还没有没有初始化器的循环示例。
    【解决方案4】:

    在这种情况下,您应该使用 while 循环

    while (condition)
      statement
    

    但您也可以使用 for...offorEach 以及相同的 for 循环,如下所示:

    您可以使用for...of

    const iterable = 'boo';
    
    for (const value of iterable) {
      if(mycondition){
       console.log(value);
      }
    }
    

    您也可以使用forEach

    const items = ['item1', 'item2', 'item3']
    const copyItems = []
    items.forEach(function(item){
      if(mycondition){
       copyItems.push(item)
      }
    })
    

    for

    for ([initialization]; [condition]; [final-expression])
       statement
    

    for (;;) 是一个无限循环,相当于 while (true),因为没有测试条件。

    for ( ; s &lt; myArray.length ; s++) 是一个没有初始化的循环。 s 将指向开始并递增直到结束。

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2019-03-18
      • 2020-02-12
      相关资源
      最近更新 更多