Проверяет понимание различий между методами replace и replaceAll в JavaScript, что важно для корректной работы со строками и регулярными выражениями.
Оба метода используются для замены частей строки, но ведут себя по-разному в зависимости от типа первого аргумента. replace — более старый метод, который при передаче строки заменяет только первое вхождение. replaceAll — новый метод (ES2021), который всегда заменяет все вхождения, если передан шаблон в виде строки.
Если в replace передать регулярное выражение без флага g, заменится только первое совпадение. С флагом g — все. replaceAll требует, чтобы регулярное выражение обязательно имело флаг g, иначе выбрасывается TypeError.
const str = 'aaa';
// replace со строкой — только первое вхождение
console.log(str.replace('a', 'b')); // 'baa'
// replace с regex и флагом g — все вхождения
console.log(str.replace(/a/g, 'b')); // 'bbb'
// replaceAll со строкой — все вхождения
console.log(str.replaceAll('a', 'b')); // 'bbb'
// replaceAll с regex без флага g — ошибка
// str.replaceAll(/a/, 'b'); // TypeError
// replaceAll с regex и флагом g — работает
console.log(str.replaceAll(/a/g, 'b')); // 'bbb'
replace — когда нужно заменить только первое совпадение или когда важна совместимость со старыми средами.replaceAll — когда нужно заменить все вхождения и код должен быть явным и читаемым без флага g.Итог: используйте replaceAll для замены всех вхождений строки, чтобы код был понятнее, а replace — когда нужно заменить только первое совпадение или требуется поддержка старых браузеров.