String: length

Властивість даних значень String length (довжина) містить довжину рядка в кодових одиницях UTF-16.

Спробуйте його в дії

Значення

Невід'ємне ціле число.

Атрибути властивості String: length
Записна ні
Перелічувана ні
Конфігуровна ні

Опис

Ця властивість повертає число кодових одиниць у рядку. JavaScript використовує кодування UTF-16, згідно з яким кожен символ Unicode може бути закодований у вигляді однієї або двох кодових одиниць, тож може статись таке, що значення, повернене length, не збігатиметься з фактичним числом символів Unicode у ряду. Для поширених систем письма штибу латиниці, кирилиці, загальновідомих китайських, японських і корейських символів тощо це не повинно бути проблемою, але при роботі з певними писемностями, як то емоджі, математичними символами або маловідомими китайськими символами, може знадобитись враховування різниці між кодовими одиницями та символами.

Специфікація мови вимагає, аби рядки мали найбільшу можливу довжину 253 - 1 елементів, що дорівнює верхній межі точних цілих чисел. Проте рядок з такою довжиною потребує 16384 ТіБ місця, а це не вміститься в жодну доцільну пам'ять пристрою, тож реалізації мають тенденцію до заниження цього порогу, так, щоб довжину рядка можна було зручно зберігати як 32-бітне ціле число.

  • У V8 (що використовується в Chrome і Node) найбільша можлива довжина – 229 - 24 (~1GiB). На 32-бітних системах найбільша можлива довжина – 228 - 16 (~512MiB).
  • У Firefox найбільша можлива довжина – 230 - 2 (~2GiB). До Firefox 65 ця межа дорівнювала 228 - 1 (~512MiB).
  • У Safari найбільша можлива довжина – 231 - 1 (~4GiB).

В порожнього рядка довжина length дорівнює 0.

Статична властивість String.length не має жодного відношення до довжин рядків. Це арність функції String (в широкому розумінні — число формальних аргументів функції), яка дорівнює 1.

Оскільки довжина length рахує кодові одиниці, а не символи, то якщо необхідно отримати саме кількість символів, можна спершу розбити рядок за допомогою його ітератора, що працює за символами:

function getCharacterLength(str) {
  // Ітератор рядка, який вжито тут, перебирає саме окремі символи,
  // а не лише кодові одиниці
  return [...str].length;
}

console.log(getCharacterLength("А\uD87E\uDC04Я")); // 3

Приклади

Базове застосування

const x = "Mozilla";
const empty = "";

console.log(`${x} має довжину ${x.length} кодових одиниць`);
// "Mozilla має довжину 7 кодових одиниць"

console.log(`Порожній рядок має довжину ${empty.length}`);
// Порожній рядок має довжину 0

Рядки з довжиною, що не дорівнює кількості символів

const emoji = "😄";
console.log(emoji.length); // 2
console.log([...emoji].length); // 1
const adlam = "𞤲𞥋𞤣𞤫";
console.log(adlam.length); // 8
console.log([...adlam].length); // 4
const formula = "∀𝑥∈ℝ,𝑥²≥0";
console.log(formula.length); // 11
console.log([...formula].length); // 9

Присвоєння значення властивості довжини

У зв'язку з тим, що рядки є примітивами, спроба присвоїти значення властивості рядка length не дасть жодного помітного ефекту, а в суворому режимі – викине помилку.

const myString = "дзвоники";

myString.length = 4;
console.log(myString); // "дзвоники"
console.log(myString.length); // 8

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

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
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

Дивіться також