所有浏览器何时开始支持String.replace(regexp,replacement_function)?

guy*_*sey 14 javascript cross-browser ecma262

根据第6版JavaScript:The Definitive Guide(Flanagan,2011):

ECMAScript v3指定替换参数replace()可以是函数而不是字符串.

我正在研究2005年编写的一些代码,其中使用了一个复杂的解决方法来替换字符串的一部分.代码的注释清楚地表明它最初使用的是功能replace()方法,但是解决方法对于跨浏览器兼容性是必需的.

ECMAScript v3于1999年问世,据我所知(从这篇论文本篇博文中可以看出),自2001年底以来,ECMAScript v3在主流浏览器中得到了支持.作者是错误的,还是有人可以解释一下为什么2005年可能需要这样的解决方案?

...

更新代码作者的实际评论说:

RegExps中的lambda函数目前是太多浏览器的问题.

改变了代码来解决问题.

作者代码适用于或运行此业务,尽管代码本身可能是个人项目.

guy*_*sey 6

这个答案基于对上述问题的评论(特别感谢kangax,如果他选择留下一个,他的答案我很可能会接受!)

虽然我本可以从字面上阅读"太多浏览器",但也有可能String.replace()使用函数作为参数是Safari 2.x(使用JavaScriptCore)和2005年IEMac 5.x中的问题.证据在那个时候,这些问题的存在,在这里,并与前述方式浏览器的特定版本在这里.

事实上由加文·基斯特纳第一这些网页中提到的解决方法是指其性能可能会在某些浏览器比功能更好的替代方法,如讨论在这里.

然而,除了性能之外,似乎(我怀疑)在今天的所有浏览器中都可以接受功能替换.

非常感谢所有关于这个问题的评论者.