ES2020包含一个新的String.prototype.matchAll
方法,它返回一个迭代器。我确定我错过了一些愚蠢/显而易见的东西,但我不明白为什么它不能只返回一个数组。
有人能解释一下这其中的逻辑吗?
编辑:仅澄清一下评论中的一些事情,我假设迭代器并没有简单地取代数组成为所有JS API返回多个值的新方式。如果我错过了这个备忘录,而且所有新的JS函数确实都返回迭代器,那么链接到该备忘录将百分之百地合格为有效答案。
但是,我怀疑这样的全面更改没有发生,Javascript的制造者在这个特定的方法中做出了具体的选择,使其返回一个迭代器...我想要理解的是这种选择的逻辑。
exec
的替代品,我们过去用它来代替matchAll以获得相同的功能,因为使用match中的g
标志无法获取与exec
中相同数量的匹配项,为了模仿相同的功能,提出了这个替代方案。 - Code Maniacexec
返回的是一个数组,而不是迭代器。从MDN中获悉:"exec()方法在指定的字符串中执行搜索匹配。返回一个结果数组或null。" - machineghostMDN
- Code Maniac