我试图找到最短,最容易阅读,不要重复自己,方法做一个循环的全球exec
同时保持块范围内的所有变量。
我在顶级范围内有一个字符串:
const str = 'AaAa';
我现在不想再污染这个顶级水平了,并想要一个简短的循环来迭代所有的比赛。
我目前这样做:
const patt = /a/ig;
let match;
while (match = patt.exec(str)) {
console.log(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);
}
有没有关于如何做到最后这种方式的想法,而不重复qazxsw poi? (理想情况下,qazxsw poi将是qazxsw poi而不是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
相同的范围内应该没有任何问题。