Кратко
СкопированоСвойство length
хранит длину строки, которое обычно совпадает с количеством символов в ней. Если в строке есть непростые символы, вроде эмодзи, они могут удлинять строку больше, чем на единицу.
Длина пустой строки равна 0.
Пример
Скопированоconst phrase = 'Съешь ещё этих мягких французских булок, да выпей же чаю'console.log(phrase.length)// 56const empty = ''console.log(empty.length)// 0const emoji = '👩💻'console.log(emoji.length)// 5 🤷♂️
const phrase = 'Съешь ещё этих мягких французских булок, да выпей же чаю' console.log(phrase.length) // 56 const empty = '' console.log(empty.length) // 0 const emoji = '👩💻' console.log(emoji.length) // 5 🤷♂️
Как понять
СкопированоСтроки в JavaScript хранятся в виде последовательности символов в формате UTF-16. UTF-16 использует понятие юнита — одного значения из таблицы UTF-16. Все символы мировых алфавитов представляются в виде одного юнита.
Редкие символы могут использовать несколько юнитов. Если вы решите использовать символы из древнеегипетской письменности, то каждый из них будет занимать два юнита:
console.log('𓀿'.length)// 2
console.log('𓀿'.length) // 2
Эмодзи состоят из нескольких юнитов. Количество использованных юнитов зависит от эмодзи:
console.log('👩💻'.length)// 5console.log('😀'.length)// 2
console.log('👩💻'.length) // 5 console.log('😀'.length) // 2
На практике
Скопированосоветует Скопировано
🛠 Если вы работаете с простым текстом без эмодзи, то свойство length
даст вам реальное количество символов в строке.
🛠 Не стоит использовать length
для измерения количества символов в пользовательском вводе — там могут быть эмодзи.
Простой способ гарантированно посчитать количество символов — воспользоваться спред-синтаксисом. Он превратит строку в массив символов, у которого можно получить длину аналогичным свойством length
:
const emojiString = '🙈🙉🙊'console.log(emojiString.length)// 6 ❌const symbols = [...emojiString]console.log(symbols.length)// 3 ✅
const emojiString = '🙈🙉🙊' console.log(emojiString.length) // 6 ❌ const symbols = [...emojiString] console.log(symbols.length) // 3 ✅
🛠️ С помощью length
можно реализовать счётчик символов: