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

时间:2013-04-13 11:42:21

标签: javascript cross-browser ecma262

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

  

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

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

ECMAScript v3于1999年问世,据我所知(来自this discussion postthis blog post),自2001年底以来,主要浏览器都支持ECMAScript v3。作者可能是错的或者有人可以说明为什么在2005年可能需要这样的解决方法?

...

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

  RegExps中的

lambda函数目前是太多浏览器的问题。

     

更改了代码以解决此问题。

作者代码适用于或运行this business,但代码本身可能是个人项目。

1 个答案:

答案 0 :(得分:6)

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

虽然我可能一直在阅读"太多的浏览器"从字面上看,有String.replace()函数作为参数的问题也可能是Safari 2.x(使用JavaScriptCore)和2005年IEMac 5.x中的问题。这些问题的证据就是时间存在here,以及上述浏览器here的特定版本。

事实上,Gavin Kistner在第一页上提到的解决方法是某些浏览器的性能可能比功能替换方法更好,如here所述。

尽管如此,除了性能之外,似乎(我怀疑)今天所有浏览器都可以接受功能替换。

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