Властивість length
об'єкта String
містить довжину рядка у кодових одиницях UTF-16. Це властивість-значення рядкових екземплярів, доступна лише для читання.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
str.length
Опис
Ця властивість повертає кількість кодових одиниць (англ. code unit), які утворюють рядок. У JavaScript для рядків використовується кодування 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
Специфікації
Специфікація |
---|
ECMAScript (ECMA-262) The definition of 'String.prototype.length' in that specification. |
Підтримка веб-переглядачами
BCD tables only load in the browser
Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію https://github.com/mdn/browser-compat-data.