string.length

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

Синтаксис

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

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

Підтримка веб-переглядачами

BCD tables only load in the browser

Див. також