← Назад к вопросам

Что такое length?

2.2 Middle🔥 191 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое свойство length в JavaScript?

Свойство length — это встроенное свойство объектов в JavaScript, которое возвращает количество элементов в массиве или строке, либо количество параметров в функции. Это одно из наиболее часто используемых свойств в языке, которое существует практически у всех встроенных объектов, работающих с коллекциями или последовательностями данных.

Основные типы объектов, имеющих свойство length

1. Массивы (Array)

Для массивов length возвращает количество элементов. Важно понимать, что это свойство можно не только читать, но и изменять, что влияет на сам массив.

const fruits = ['яблоко', 'банан', 'апельсин'];
console.log(fruits.length); // 3

// Изменение length может усечь массив или добавить пустые элементы
fruits.length = af;
console.log(fruits); // ['яблоко', 'банан'] - массив обрезан

fruits.length = af;
console.log(fruits); // ['яблоко', 'банан', undefined, undefined] - добавлены пустые слоты

2. Строки (String)

Для строк length возвращает количество символов (включая пробелы и специальные символы). В отличие от массивов, это свойство только для чтения.

const message = 'Привет, мир!';
console.log(message.length); // 12 символов

3. Функции (Function)

Для функций length возвращает количество параметров, ожидаемых функцией в её определении.

function sum(a, b, c) {
  return a + b + c;
}
console.log(sum.length); // 3 - функция ожидает 3 параметра

4. Псевдомассивы (Array-like objects)

Многие объекты в JavaScript имеют свойство length, но не являются настоящими массивами. Например, arguments внутри функций, NodeList из DOM API, или HTMLCollection.

function example() {
  console.log(arguments.length); // количество переданных аргументов
}

example(1, 2, 3); // 3

Особенности поведения

Динамичность в массивах

Свойство length массивов автоматически обновляется при добавлении или удалении элементов:

const arr = [];
console.log(arr.length); // 0
arr.push('элемент');
console.log(arr.length); // 1
arr.pop();
console.log(arr.length); // 0

Различия между строками и массивами

  • Строки: length считает символы в UTF-16 кодировке, что может привести к неожиданностям с эмодзи или суррогатными парами
  • Массивы: length всегда на 1 больше, чем индекс последнего элемента (если массив плотный)
// Пример с суррогатными парами
const emoji = '😀';
console.log(emoji.length); // 2 (суррогатная пара в UTF-16)

Разреженные массивы

В разреженных массивах (с "дырами") length может не соответствовать реальному количеству элементов:

const sparseArray = [];
sparseArray[5] = 'элемент';
console.log(sparseArray.length); // 6, хотя фактически только 1 элемент

Практическое применение

Итерация по элементам

Чаще всего length используется в циклах:

const items = ['A', 'B', 'C'];
for (let i = 0; i < items.length; i++) {
  console.log(items[i]);
}

Проверка на пустоту

if (array.length === 0) {
  console.log('Массив пуст');
}

Копирование и работа с коллекциями

// Копирование массива с использованием length
const source = [1, 2, 3];
const copy = new Array(source.length);
for (let i = 0; i < source.length; i++) {
  copy[i] = source[i];
}

Заключение

Свойство length — это фундаментальная часть JavaScript, которая обеспечивает унифицированный интерфейс для работы с размерами различных коллекций данных. Его понимание критически важно для эффективной работы с:

  • Массивами (изменяемое свойство, влияющее на структуру)
  • Строками (только для чтения, считает символы в UTF-16)
  • Функциями (количество параметров)
  • Псевдомассивами (DOM-коллекции, arguments и др.)

Главная сила length заключается в его консистентности — несмотря на разные типы объектов, доступ к размеру коллекции всегда осуществляется одинаковым способом, что упрощает разработку и делает код более предсказуемым.