Что именно происходит в этой последовательности JavaScript? - PullRequest
1 голос
/ 09 сентября 2010

Я бы хотел глубже понять нюансы javascript.

Возьмите функцию ниже:

str.replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
    ret[param] = value;
});
  • Зачем нужна / г?
  • Что точно передается в функционировать?
  • Откуда эти значения от

Спасибо!

Ответы [ 2 ]

5 голосов
/ 09 сентября 2010

Почему существует необходимость в / g?

Поскольку предположительно у вас будет несколько пар в совпадающей строке, например, a:'b' c:'d'

Чтоточно передается в функцию?

Функция обратного вызова получает все совпадение в качестве первого аргумента, два более поздних аргумента - это группы захвата, указанные в вашем регулярном выражении.

"a:'b' c:'d'".replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
    console.log($0, param, value);
});

Обратный вызов будет выполнен дважды, и он покажет вам "a:'b'" для $0, "a" для param и "b" для value при первом выполнении.

Во втором исполнении - для второго матча - покажет "c:'d'" для $0, "c" для param и "d" для значения.

1 голос
/ 09 сентября 2010

г в / г означает глобальный. Это убедитесь, что все совпадения заменены. При отсутствии / g заменяется только первое совпадение. / i (игнорировать регистр) - еще один часто используемый ключ.

Каждый раз, когда движок javascript находит совпадение (для вашего регулярного выражения) в строке, он вызывает переданную вами функцию с параметрами для каждого совпадения.

подробно объяснил здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...