Привет всем! У меня есть код на JavaScript, который делает первую букву каждого слова заглавной. Но я хочу переписать его без использования this
и new
. Слышал, что Дуглас Крокфорд считает их вредными. Вот примерно как выглядит мой код сейчас:
function заглавныеБуквы(строка) {
function обработатьПервуюБукву(буква) {
return буква.toUpperCase();
}
function обработатьОстальныеБуквы(остаток) {
return остаток.split(' ').map(слово =>
слово[0].toUpperCase() + слово.slice(1)
).join(' ');
}
return обработатьПервуюБукву(строка[0]) + обработатьОстальныеБуквы(строка.slice(1));
}
console.log(заглавныеБуквы('учимся крутым штукам'));
Как лучше переписать этот код, чтобы избавиться от this
и new
? Буду благодарен за любые советы!
Твой код уже не использует this и new, так что тут все окей. Но если хочешь сделать его еще функциональнее, можно попробовать так:
const заглавныеБуквы = строка =>
строка.replace(/\b\w/g, буква => буква.toUpperCase());
Это решение использует регулярку для поиска первых букв слов. Оно короче и, возможно, чуть производительнее. Но честно, твой вариант тоже вполне рабочий, так что выбирай то, что тебе больше нравится и кажется понятнее.
слушай, а может не стоит заморачиваться насчет this и new? в твоем коде их и так нет. главное чтобы код работал и был понятным. я бы предложил такой вариант:
const заглавныеБуквы = строка =>
строка.toLowerCase().replace(/(^|\s)\S/g, с => с.toUpperCase());
тут мы сначала все в нижний регистр переводим на всякий случай, а потом с помощью регулярки находим первые буквы слов и делаем их заглавными. получается коротко и ясно. как тебе такое решение?
А зачем вообще избегать this
и new
? В твоем коде их и так нет. Крокфорд, конечно, авторитет, но не стоит слепо следовать чужим советам. Главное - писать понятный код. Твоя функция вполне рабочая, хотя можно немного упростить:
function заглавныеБуквы(строка) {
return строка.split(' ')
.map(слово => слово[0].toUpperCase() + слово.slice(1))
.join(' ');
}
Так короче и яснее, как по мне. А ты как думаешь?