Объяснение работы метода .slice()

118
05 января 2020, 03:10

Есть функция

const capitalize = name => name[0].toUpperCase() + name.slice(1);

Подскажите, пожалуйста, почему в результате в заглавной букве присоединяется всё оставшееся слово, а не только второй символ? name.slice(1)

Answer 1

Метод String.prototype.slice(start, end), который вы вызываете в своей стрелочной функции, ожидает два входных параметра, оба приводятся к числу. Если одного из них не хватает, то есть метод был вызван как name.slice(1), то в качестве второго параметра принимается вся длина строки name.length. Если же и первый аргумент отсутствует name.slice(), то считается, что он равен нулю.

Дальше этот метод уже работает с полученными данными, т.е. возвращает часть исходной строки начиная от индекса с номером start включительно, до символа* с индексом end, не учитывая его. Отрицательные индексы считаются от конца строки, таким образом −1 означает последний символ в данной строке.

Вот примеры:

var name = "Мастер"
name.slice(1, 4)                       // "аст"
name.slice(3) == name.slice(3, 6)      // "тер"
name.slice(3, -1) == name.slice(3, 5)  // "те"
name.slice(-2) == name.slice(-2, 6)    // "ер"

* Здесь имеется ввиду code point.

READ ALSO
Разница ParseInt, ParseFloat и Number

Разница ParseInt, ParseFloat и Number

Всем привет! Скажите, в чём разница между функциями ParseFloat, ParseInt и Number? В результате этих функций строка преобразуется в число

112
Что нужно сделать что бы открывались ссылки без окончания .js?

Что нужно сделать что бы открывались ссылки без окончания .js?

Я хочу что бы у меня в адресной строке ссылка со скриптом открывалась не вот так

117
Забрать значение из блока.React

Забрать значение из блока.React

Есть следующие блоки:

136