Кратко
СкопированоСвойство 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 можно реализовать счётчик символов: