String length

Властивість length об'єкту String містить довжину цього рядка, виміряну в кодових одиницях UTF-16. length — це доступна лише для читання властивість екземпляру рядка.

Спробуйте його в дії

Опис

Ця властивість повертає кількість кодових одиниць в рядку. Формат кодування рядків у JavaScript — UTF-16 — потребує одну 16-бітну кодову одиницю для позначення більшості загальновживаних символів, проте вимагає двох таких кодових одиниць для позначення менш вживаних символів. Тому цілком можлива ситуація, коли значення, повернене властивістю length, не відповідає справжній кількості символів рядка.

Специфікація ECMAScript 2016 (7 редакція) встановила максимально допустиму довжину рядка рівну 2^53 - 1 елементам. Раніше ніякої максимальної довжини не вказувалось. У Firefox рядки мають максимальне значення довжини рядка 2**30 - 2 (~1GB). У раніших версіях, до Firefox 65, максимальна довжина рядка дорівнювала 2**28 - 1 (~256MB).

В порожнього рядка довжина length дорівнює 0.

Статична властивість String.length не має жодного відношення до довжин рядків, це арність функції String (в широкому розумінні — число формальних аргументів функції), яка дорівнює 1.

Unicode

Оскільки довжина `length` налічує кодові одиниці, а не символи, то якщо необхідно отримати саме кількість символів — варто застосувати щось таке:

function getCharacterLength (str) {
  // Ітератор рядка, який вжито тут, перебирає саме окремі символи,
  // а не лише кодові одиниці
  return [...str].length;
}

console.log(getCharacterLength('А\uD87E\uDC04Я')); // 3

// Хоча це й не рекомендується, можна також додати таку функцію до кожного рядка, як наведено далі:

Object.defineProperty(String.prototype, 'charLength', {
  get () {
    return getCharacterLength(this);
  }
});

console.log('А\uD87E\uDC04Я'.charLength); // 3

Приклади

Базове застосування

let x = 'Mozilla';
let empty = '';

console.log(x + ' має довжину ' + x.length + ' кодових одиниць');
/* "Mozilla має довжину 7 кодових одиниць" */

console.log('Порожній рядок має довжину ' + empty.length);
// очікуваний вивід: "Порожній рядок має довжину 0"

Присвоєння значення властивості довжини

let myString = "дзвоники";

// Спроба присвоїти якесь значення властивості .length рядка не дає ніякого помітного ефекту.
myString.length = 4;
console.log(myString);
// очікуваний вивід: "дзвоники"
console.log(myString.length);
// очікуваний вивід: 8

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
length
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 3
Opera Full support 3
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також