Javascript Хотя условие цикла с ошибкой без cond-assign - PullRequest
2 голосов
/ 27 июня 2019

Ошибка: Ожидал условное выражение и вместо этого увидел присваивание. (no-cond-assign)

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

Выполнение цикла while для переназначения совпадения, но с ошибкой no-cond-assign. Я все еще могу получить вывод без ошибок, но каков наилучший способ исправить синтаксис? Спасибо

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Один из вариантов - использовать цикл do-while, чтобы вы могли break внутри while(true):

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

ИМО, эта ситуация - время один в Javascript, когда назначение внутри условного обозначения яснее, чем альтернативное. Я бы не боялся отключить это правило для этой строки.

Предполагая, что вы хотите получить первую группу захвата, в будущем вы сможете использовать string.prototype.matchAll :

const str = '<%hello%> you <%!%>';
const contentInsidePercents = [...str.matchAll(/<%([^%>]+)?%>/g)]
  .map(match => match[1]);
1 голос
/ 27 июня 2019

Вы можете просто использовать

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

const re = /<%([^%>]+)?%>/g;
let match;
while ((match = re.exec('<%hello%> you <%!%>'))!== null) {
  console.log(match);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...