> Как оптимизировать обработку кликов на ячейки большой таблицы в веб-приложении (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Exness, HolyWeb

Стек: JavaScript

> Пример ответа

Для оптимизации обработки кликов на ячейки большой таблицы в веб-приложении на JavaScript следует применить делегирование событий. Вместо того чтобы вешать обработчик на каждую ячейку (что создаёт тысячи слушателей и замедляет рендеринг), вешаем один обработчик на родительский элемент (например, <tbody> или <table>). Используем свойство event.target, чтобы определить, какая ячейка была кликнута, и обработать её.

Пример реализации:

JAVASCRIPT
const table = document.getElementById('large-table');
table.addEventListener('click', (event) => {
const cell = event.target.closest('td'); // или 'th'
if (!cell) return; // клик не по ячейке
const row = cell.closest('tr');
const rowIndex = row.rowIndex; // индекс строки
const cellIndex = cell.cellIndex; // индекс ячейки
const cellData = cell.textContent; // содержимое
// Логика обработки
console.log(`Клик по ячейке [${rowIndex}, ${cellIndex}]: ${cellData}`);
});

Дополнительные оптимизации:

  • Виртуализация: если таблица содержит десятки тысяч строк, используйте библиотеки (например, react-virtualized или ag-Grid) для рендеринга только видимых ячеек.
  • Throttle/Debounce: если обработка клика вызывает сложные вычисления или сетевые запросы, ограничьте частоту вызовов.
  • Избегайте innerHTML: при динамическом обновлении содержимого ячеек используйте textContent или фрагменты документа.
  • CSS-селекторы: для быстрого поиска целевого элемента используйте closest() вместо сложных DOM-обходов.

Такой подход снижает потребление памяти, ускоряет начальную загрузку и улучшает отзывчивость интерфейса.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью