--- title: string.length slug: Web/JavaScript/Reference/Global_Objects/String/length tags: - JavaScript - Property - Prototype - String - Властивість - Довідка - довжина - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/length ---
Властивість length об'єкта {{jsxref("String")}} містить довжину рядка у кодових одиницях UTF-16. Це властивість-значення рядкових екземплярів, доступна лише для читання.
{{EmbedInteractiveExample("pages/js/string-length.html", "shorter")}}
str.length
Ця властивість повертає кількість кодових одиниць (англ. code unit), які утворюють рядок. У JavaScript для рядків використовується кодування {{interwiki("wikipedia", "UTF-16")}}, яке вживає одну 16-бітну (двобайтну) кодову одиницю для передачі більшості загальновживаних символів, але для менш поширених воно потребує двох кодових одиниць. Отже, значення, length та справжня кількість символів рядка не завжди збігаються.
У ECMAScript 2016 (вер. 7) було встановлено максимальну довжину у 2^53 - 1 елементів. Попередньо не було визначено ніякої максимальної довжини. У Firefox рядки мають максимальну довжину 2**30 - 2 (~1ГБ). У версіях, більш ранніх за Firefox 65, максимальна довжина складала 2**28 - 1 (~256МБ).
Для порожнього рядка length дорівнює 0.
Статична властивість String.length не пов'язана з довжиною рядків, це арність функції String (загалом, це кількість формальних параметрів, що вона має), яка дорівнює 1.
Оскільки `length` рахує кодові одиниці замість символів, якщо вам треба отримати кількість символів, вам знадобиться щось таке:
function getCharacterLength (str) {
// Ітератор рядка, що тут використовується, перебирає символи,
// а не просто кодові одиниці
return [...str].length;
}
console.log(getCharacterLength('A\uD87E\uDC04Z')); // 3
// Це не рекомендується, але ви можете додати його до кожного рядка ось так:
Object.defineProperty(String.prototype, 'charLength', {
get () {
return getCharacterLength(this);
}
});
console.log('A\uD87E\uDC04Z'.charLength); // 3
var x = 'Вогнелис';
let empty = '';
console.log(x + ' має довжину ' + x.length + ' кодових одиниць');
/* "Вогнелис має довжину 8 кодових одиниць" */
console.log('Порожній рядок має довжину ' + empty.length);
// очікуваний результат: "Порожній рядок має довжину 0"
let myString = "проліски"; // Спроба присвоїти значення властивості рядка .length не має видимого ефекту. myString.length = 4; console.log(myString); // очікуваний результат: "проліски" console.log(myString.length); // очікуваний результат: 8
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-properties-of-string-instances-length', 'String.prototype.length')}} |
Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію https://github.com/mdn/browser-compat-data.
{{Compat("javascript.builtins.String.length")}}