Javascript While循环条件,无条件分配错误

时间:2019-06-27 09:17:54

标签: javascript eslint

错误::需要一个条件表达式,但看到一个分配。 (const re = /<%([^%>]+)?%>/g; let match; while (match = re.exec('<%hello%> you <%!%>')) { console.log(match); }

while

执行no-cond-assign循环以重新分配匹配,但出现ScopeNational错误。我仍然可以获得无错误的输出,但是更正语法的最佳方法是什么?谢谢

2 个答案:

答案 0 :(得分:2)

一种选择是改为使用do-while循环,因此您可以在breakwhile(true)

const re = /<%([^%>]+)?%>/g;
while (true) {
  const match = re.exec('<%hello%> you <%!%>');
  if (!match) {
    break;
  }
  console.log(match);
}

IMO,这种情况是Javascript中的 one 时间,其中条件内的赋值比替代条件更清晰。我不会害怕为这一行禁用该掉毛规则。

假设您想检索第一个捕获组,将来,您将可以使用string.prototype.matchAll

const str = '<%hello%> you <%!%>';
const contentInsidePercents = [...str.matchAll(/<%([^%>]+)?%>/g)]
  .map(match => match[1]);

答案 1 :(得分:1)

您可以简单地使用

while ((match = re.exec('<%hello%> you <%!%>'))!== null)

const re = /<%([^%>]+)?%>/g;
let match;
while ((match = re.exec('<%hello%> you <%!%>'))!== null) {
  console.log(match);
}