【问题标题】:What does assignment in while condition check?while 条件中的赋值检查什么?
【发布时间】:2019-05-29 15:16:18
【问题描述】:
while(a = foo())
{
    bar();
}

这是在检查吗:

  • 如果分配成功,运行 bar,或者
  • 如果 a 已定义且非空,则运行栏或
  • 还有别的吗?

【问题讨论】:

    标签: javascript while-loop


    【解决方案1】:

    在每次迭代中,它将foo() 调用的结果分配给a,如果该结果为真,则运行循环并再次尝试,直到调用结果为假。

    例如,虽然在条件内部分配通常是一种代码味道,但在尝试迭代全局正则表达式中的捕获组时经常会看到这种情况:

    const str = 'abcdefg';
    const pattern = /(.)./g;
    let match;
    while (match = pattern.exec(str)) {
      console.log('first captured group was ' + match[1]);
    }
    // after the last iteration, `match` is null, so the loop stops

    如果分配成功,并且不成功的原因会引发错误,那么整个脚本会因错误而停止。 (除非它周围有 try / catch 块)

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 2020-10-27
      • 2013-05-19
      • 1970-01-01
      • 2010-11-11
      • 2011-12-08
      • 2016-11-08
      • 2015-05-03
      相关资源
      最近更新 更多