Когда все браузеры начали поддерживать String.replace(regexp, replacement_function)?
В соответствии с 6-м выпуском JavaScript: окончательное руководство (Flanagan, 2011):
ECMAScript v3 указывает, что аргумент замены replace()
может быть функцией вместо строки.
Я смотрю код, написанный в 2005 году, где сложный обходной путь использовался для замены частей строки. Замечания для кода ясно показывают, что он первоначально использовал функциональный метод replace()
, но обходной путь был необходим для совместимости с несколькими браузерами.
ECMAScript v3 вышел в 1999 году и, насколько я могу судить (от этот пост обсуждения и это сообщение в блоге), ECMAScript v3 поддерживался в основных браузерах с конца 2001 года. Может ли автор ошибиться или кто-то может пролить свет на то, почему такое обходное решение могло быть необходимо в 2005 году?
...
ОБНОВЛЕНИЕ. Фактический комментарий автора кода говорит:
lambda-функции в RegExps в настоящее время являются проблемой со слишком большим количеством браузеров.
изменен код для работы.
Авторский код работает или запускает этот бизнес, хотя сам код вполне может быть личным проектом.
Ответы
Ответ 1
Этот ответ основан на комментариях к вышеуказанному вопросу (с особой благодарностью kangax, чей ответ я, скорее всего, соглашусь, если он захочет оставить его! )
В то время как возможно, что я мог бы читать "слишком много браузеров" в буквальном смысле, также возможно, что String.replace()
с функцией в качестве аргумента была проблемой в Safari 2.x(с использованием JavaScriptCore) и в IEMac 5.x в 2005 году. Доказательства этих проблем в то время существуют здесь и с теми конкретными версиями вышеупомянутых браузеров здесь.
Фактически обходной путь, упомянутый Гавином Кистнером на первой из этих страниц, - это тот, чья производительность может быть лучше в некоторых браузерах, чем метод функциональной замены, как обсуждалось здесь .
Тем не менее, производительность в сторону, кажется (как я подозревал), что функциональная замена приемлема во всех браузерах сегодня.
Большое спасибо всем комментаторам по этому вопросу.