.length

Свойство возвращает количество символов в строке.

Время чтения: меньше 5 мин

Кратко

Скопировано

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

Открыть демо в новой вкладке