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
Специфікації
Специфікація |
---|
ECMAScript Language Specification (ECMAScript) # sec-properties-of-string-instances-length |
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |