Лучший и самый надёжный метод — использовать Array.isArray():
Array.isArray([1, 2, 3]); // true
Array.isArray("hello"); // false
Это предпочтительное современное решение — оно работает корректно во всех контекстах выполнения.
typeof?Оператор typeof не подходит для проверки массивов, потому что он возвращает "object" как для массивов, так и для обычных объектов:
typeof [1, 2, 3]; // "object" — не помогает
typeof {}; // "object" — одинаковый результат
instanceof?instanceof Array проверяет цепочку прототипов, но ломается при работе с разными контекстами выполнения, например с iframe'ами, где каждый фрейм имеет свой конструктор Array:
value instanceof Array; // может вернуть false для массивов из других фреймов
Object.prototype.toString.call(value) — это надёжный запасной вариант для старых окружений без Array.isArray():
Object.prototype.toString.call([1, 2, 3]); // "[object Array]"
Array.isArray()Array.isArray() по умолчанию — понятно, лаконично и безопасно для любого контекстаtypeof для проверки массивов вообщеinstanceof при работе с несколькими фреймами или окнамиObject.prototype.toString только если нужна поддержка совсем старых окруженийArray.isArray() корректно определяет массивы в разных контекстах выполнения, например в iframe, в то время как instanceof Array может не работать при проверке массивов из других фреймов.
Новый — ещё не проверен сообществом
Вы