Что возвращает метод Array.isArray
Разбор вопроса «Что возвращает метод Array.isArray» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Что возвращает метод Array.isArray
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает назначение метода Array.isArray, знает его возвращаемое значение и может объяснить, почему его использование предпочтительнее других способов проверки на массив.
Ключевые тезисы
- Метод Array.isArray проверяет, является ли переданный аргумент массивом.
- Он возвращает true, если аргумент является массивом, и false — в противном случае.
- Этот метод полезен для точной проверки типа, так как typeof для массива возвращает 'object'.
- Array.isArray работает корректно даже для массивов, созданных в другом контексте выполнения (например, в другом фрейме или окне браузера).
Подробный ответ
Метод Array.isArray предназначен для проверки, является ли переданный аргумент массивом. Этот метод возвращает true, если аргумент является массивом, и false — в противном случае. Использование Array.isArray особенно важно в JavaScript, так как оператор typeof для массива возвращает 'object', что делает его ненадежным для точной проверки типа. Например, typeof [] вернет 'object', что может привести к путанице при проверке типа переменной. Array.isArray решает эту проблему, предоставляя точный способ определения массива. Кроме того, Array.isArray работает корректно даже для массивов, созданных в другом контексте выполнения, например, в другом фрейме или окне браузера. Это делает его универсальным и надежным инструментом для проверки типа массива в различных сценариях.
Практические примеры
Пример 1
Пример использования Array.isArray для проверки массива:
const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // trueПример 2
Пример использования Array.isArray для проверки объекта, похожего на массив:
const obj = { length: 0 };
console.log(Array.isArray(obj)); // falseПример 3
Пример использования Array.isArray для проверки массива, созданного в другом контексте выполнения:
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const iframeArr = iframe.contentWindow.Array.from([1, 2, 3]);
console.log(Array.isArray(iframeArr)); // trueЧастые ошибки
- Использование typeof для проверки массива: const arr = [1, 2, 3]; console.log(typeof arr); // 'object' — это не поможет точно определить массив.
- Попытка использовать Array.isArray для проверки объектов, похожих на массивы (например, arguments или NodeList): const nodeList = document.querySelectorAll('div'); console.log(Array.isArray(nodeList)); // false — NodeList не является массивом, хотя и похож на него.
Связанные темы
- Оператор typeof и его ограничения в JavaScript
- Объекты, похожие на массивы (например, arguments, NodeList)
- Методы работы с массивами в JavaScript (например, Array.from, Array.prototype.slice)
- Контексты выполнения в JavaScript и их влияние на проверку типов
Follow-up вопросы
Почему нельзя использовать typeof для проверки массива?
Уровень: basic
typeof возвращает 'object' для массивов, потому что в JavaScript массив — это объект. Это делает typeof непригодным для точной проверки типа массива.
Какие еще способы проверки массива существуют в JavaScript?
Уровень: intermediate
Можно использовать instanceof Array, но это не работает для массивов, созданных в другом контексте выполнения. Также можно проверить наличие свойства length и методов массива, но это менее надежно, чем Array.isArray.
Как работает Array.isArray для объектов, похожих на массивы (например, arguments или NodeList)?
Уровень: advanced
Array.isArray возвращает false для объектов, похожих на массивы, таких как arguments или NodeList, потому что они не являются настоящими массивами, несмотря на наличие свойств и методов, похожих на массивы.
Можно ли переопределить поведение Array.isArray?
Уровень: intermediate
Нет, Array.isArray является встроенным методом JavaScript, и его поведение нельзя изменить или переопределить.
Что делает метод filter в JavaScript
Разбор вопроса «Что делает метод filter в JavaScript» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Что возвращает метод массива splice в JavaScript
Разбор вопроса «Что возвращает метод массива splice в JavaScript» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.