我试图找到最短,最容易阅读,不要重复自己的方法,以便在将所有变量保持在块范围内的同时执行循环全局exec
。
我在顶级范围内有一个字符串:
const str = 'AaAa';
我现在不想再污染这个顶级水平,并且想要一个简短的循环循环来迭代所有比赛。
我目前正在这样做:
const patt = /a/ig;
let match;
while (match = patt.exec(str)) {
console.log(match);
}
但是,这会将match和patt放入顶级范围(假设我不将其包装在一个块中)
这可行,但是我必须在
match=patt.exec(str)
的初始化部分和for
的重复部分中重复for
:for (let patt = /a/ig, match=patt.exec(str); match; match=patt.exec(str)) {
console.log('match:', match);
}
关于在不重复
match=patt.exec(str)
的情况下如何进行此操作是否有任何想法? (理想情况下,patt
应该是const patt
而不是let patt
,因为它有助于提高易读性,使其更加易懂)理想的情况是这样的伪代码:
for (const patt = /a/ig, let match=patt.exec(str); match;) {
console.log('match:', match);
}
最佳答案
你只要写
{
const patt = /a/ig;
for (let match; match=patt.exec(str); ) {
console.log('match:', match);
}
}
您不能在
let
循环头中将const
与for
语句组合在一起。您可能要离开周围的区域,将
const patt
放在与const str
相同的范围内应该没有什么问题。