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

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'String.prototype.length' in that specification.

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
lengthChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Див. також