Нечетная строка JavasScript заменяет поведение $&
следующий код:
var x = 'foo';
console.log(x.replace(x, "$&"));
вывод 'foo', как показано здесь:http://jsfiddle.net/mPKEx/
почему это не
'$&"?
я заменяю все x на"$&", который является просто старой строкой плана, поэтому почему строка.замените выполнение какой-то сумасшедшей замены, когда 2-й arg функции не должен ничего делать, кроме замены...
2 ответов
$& - Это специальная ссылка в строке замены Javascript. Это точки в соответствующей строке.
$$ - Inserts a "$" $& - Refers to the entire text of the current pattern match. $` - Refers to the text to the left of the current pattern match. $' - Refers to the text to the right of the current pattern match. $n or $nn - Where n or nn are decimal digits, inserts the nth parenthesized submatch string, provided the first argument was a RegExp object.
(ссылка)
в вашем случае:
var x = 'foo';
console.log(x.replace(x, function() {return '\$&'}));
см. различия:http://jsfiddle.net/mPKEx/10/
вы можете указываете функцию в качестве второго параметра. Вышеупомянутые специальные модели замены ($$, $&, $`, $', $n или $nn) do не применить в этом случае.