【问题标题】:Putting multiple statements within `for` argument [duplicate]在`for`参数中放置多个语句[重复]
【发布时间】:2016-02-10 00:20:02
【问题描述】:

我想在for循环的初始化语句中放入多个语句,我做了如下:

for({var i = 0; var j = 1;}; someCondition; i++){
  ...
}

但这似乎会导致语法错误。单个语句不能用{} 代替吗?为什么它不起作用?有没有办法在for 参数中放置多个语句?

【问题讨论】:

  • for 初始化器是一个表达式,而不是一个语句。
  • @Bergi:表达式或变量声明。或者我猜它甚至不是一个变量声明,而只是 var 的东西。 ecma-international.org/ecma-262/6.0/…

标签: javascript


【解决方案1】:

您可以使用{ } 创建一个新块来代替语句。但是a for loop requires a declaration or assignment

相反,您可以使用,

for (i = 0, j = 1; someCondition: i++) { ... }

【讨论】:

    【解决方案2】:

    但这似乎会导致语法错误。

    是的,确实如此。

    单个语句不能用 {} 代替吗?

    没有。

    有没有办法在参数中放入多个语句?

    不是真的。

    对于这种特定情况,您可以使用逗号运算符在单个表达式中设置两个变量的值。

    for(i = 0, j = 1; someCondition; i++){
    

    但这绝对不是惯用的。

    【讨论】:

      【解决方案3】:

      只需使用逗号分隔它们。见这里:

      for(i = 0, j = 1; i < 5; i++){
        console.log(i, j);
      }

      没有理由期望表达式可以被对象替换。

      【讨论】:

      • 我相信 { ... } 在这种情况下等同于一个块,而不是一个对象。
      • @MikeC:在这种情况下,两者都不等同。
      • @MikeC,对不起,我误读了{i = 0, j = 1}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 2017-04-04
      • 2011-02-28
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多