javascript - 所有浏览器什么时候开始支持 String.replace(regexp, replacement_function)?

标签 javascript cross-browser ecma262

根据第 6 版JavaScript:权威指南(Flanagan,2011 年):

ECMAScript v3 specifies that the replacement argument to replace() may be a function instead of a string.

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

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

...

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

lambda functions in RegExps are currently a problem with too many browsers.

changed code to work around.

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

最佳答案

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

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

事实上,Gavin Kistner 在这些页面的第一页上提到的解决方法在某些浏览器中的性能可能比函数替换方法更好,如讨论的那样 here .

然而,撇开性能不谈,似乎(正如我所怀疑的那样)功能性替换在今天的所有浏览器中都是可以接受的。

非常感谢所有对此问题的评论者。

关于javascript - 所有浏览器什么时候开始支持 String.replace(regexp, replacement_function)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987403/

相关文章:

javascript - 如何在 HTML5 canvas 上自动播放视频短片?

高度为 100% 的 HTML 布局

javascript - 获取屏幕、当前网页和浏览器窗口的大小

javascript - 在严格模式下获取未知环境中全局对象的引用

javascript - 除了一段代码,jQuery 可以正常工作

javascript - 这个 redux Action 和 reducer 有什么问题?

javascript - 使用 Typescript 声明字符串结构的最佳方法?

javascript - 发送带有 header 的 AJAX 请求

java - Java正则表达式与ECMA-262(AS、JS)的区别

javascript - 我可以为特定功能禁用 ECMAscript 严格模式吗?