JavaScript String Заменить регулярным выражением и функцией в качестве аргументов

Я, кажется, получаю противоречивые советы в книгах, которые я читал по этой функциональности. Мне интересно, может ли кто-нибудь уточнить. Например, Николас Закас утверждает, что аргумент функции имеет подпись формата function (match, pos, originalText) (P139: Профессиональный JavaScript для веб-разработчиков, 2-е изд.: Wrox)

Он продолжает: Когда регулярное выражение имеет одно совпадение, функции передаются три аргумента (как указано выше). Когда имеется несколько групп захвата, каждая совпадающая строка передается в качестве аргумента, причем последние две позиции - это позиция и исходный текст ...

Затем мы переходим к Дагу Крокфордсу, JavaScript: Хорошие части. (P90): Он снова определяет синтаксис как строку (searchValue, replaceValue) searchValue может быть регулярным выражением - отличное совпадение. если replaceValue - это функция, первый параметр - это совпадающий текст, затем второй - группа захвата 1, третий - группа захвата 2 и т. д. Здесь заметная разница. (т.е. без аргумента позиции)

Я также рассматривал пример в шаблонах проектирования Pro JavaScript (APress P152), который запускал весь этот процесс перекрестных ссылок. Эти ребята (Росс Хармс / Дастин Диаз) довольно бесполезно указывают функцию replaceValue с двумя аргументами с именами a и b. Но это имеет тенденцию укреплять идею, которую описывает Дуг Крокфорд.

Может ли кто-нибудь подтвердить, действительно ли описание Николаса Закаса является допустимым вариантом?

10
задан JGFMK 6 November 2010 в 17:13
поделиться