Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Перевірка на масив». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`Array.isArray(value)`** - сучасний і надійний спосіб перевірити, що значення є масивом; він працює у всіх сучасних браузерах і Node.js і правильно визначає масиви навіть з інших контекстів (наприклад, з iframe). **Ключове:** завжди використовуй `Array.isArray(value)` - це найточніший і найкоротший спосіб.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. `Array.isArray(value)` - сучасний і надійний спосіб ```javascript Array.isArray([1, 2, 3]); // true Array.isArray("text"); // false Array.isArray({}); // false ``` - Працює у всіх сучасних браузерах і Node.js. - Правильно визначає масиви навіть з **інших контекстів** (наприклад, з iframe). - Це **рекомендований** спосіб перевірки. --- ## 2. `instanceof Array` - старий, але робочий ```javascript [1, 2, 3] instanceof Array; // true "abc" instanceof Array; // false ``` Однак: - Якщо масив створений в **іншому вікні або фреймі**, результат може бути **хибним**, тому що у кожного контексту свій конструктор `Array`. ```javascript // Приклад проблеми: const arr = window.frames[0].Array; arr instanceof Array; // false ``` --- ## 3. Перевірка через `Object.prototype.toString.call()` Цей спосіб універсальний для будь-яких типів (часто використовують у бібліотеках). ```javascript Object.prototype.toString.call([]); // "[object Array]" Object.prototype.toString.call({}); // "[object Object]" Object.prototype.toString.call("hi"); // "[object String]" ``` --- ## 4. Чому не `typeof` ```javascript typeof []; // "object" ``` `typeof` не підходить, тому що масив - це **об'єкт**, і результат завжди `"object"`. --- ## Підсумок | Метод | Повертає | Надійність | Коментар | |---|---|---|---| | `Array.isArray(value)` | правильно | 5/5 | найкращий варіант | | `value instanceof Array` | правильно | 3/5 | залежить від контексту | | `Object.prototype.toString.call(value)` | правильно | 4/5 | універсальний, але громіздкий | | `typeof value` | `"object"` | 1/5 | не розрізняє масиви | --- > **Висновок:** > Завжди використовуй `Array.isArray(value)` - це найточніший і найкоротший спосіб.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.