Давайте посмотрим, что выведет оператор typeof для объекта:
console.log(typeof {}); // выведет 'object'
Как в общем-то и ожидалось, мы видим строку 'object'.
А вот если проверить typeof массив, то здесь поведение уже будет не очень ожидаемым - результатом также будет 'object', а не 'array', как можно было бы подумать:
console.log(typeof []); // тоже выведет 'object'
Дело в том, что на самом деле в JavaScript нет отдельного типа данных для массивов - каждый массив представляет собой частный случай объекта.
Объекты (в том числе и массивы, как вы уже знаете) считаются сложными типами данных. Строки, числа, логические значения считаются простыми, или примитивными типами данных.
Их часто так и называют - примитивы, подразумевая все то, что не является объектом.
В JavaScript шесть примитивных типов данных: string, number, boolean, null, undefined, symbol (новое в ES6).
Запомните их количество и названия - это часто спрашивают на собеседованиях.
Не подсматривая в учебник перечислите все примитивные типы данных в JavaScript.
Не запуская код, определите, что выведется на экран в консоль:
console.log( typeof {a: 1, b: 2, c: 3} );
Не запуская код, определите, что выведется на экран в консоль:
console.log( typeof [1, 2, 3] );
Не запуская код, определите, что выведется на экран в консоль:
let arr = [1, 2, 3];
console.log( typeof arr );
Не запуская код, определите, что выведется на экран в консоль:
let arr = [1, 2, 3];
console.log( typeof arr[0] );
Не запуская код, определите, что выведется на экран в консоль:
let arr = ['1', '2', '3'];
console.log( typeof arr[0] );
Как определить массив ли объект
Как было указано выше, оператор typeof не позволяет различать массивы и объекты. Иногда, однако, это необходимо сделать.
На помощь придет функция Array.isArray():
console.log( Array.isArray([]) ); // выведет true
console.log( Array.isArray({}) ); // выведет false
Не запуская код, определите, что выведется на экран в консоль:
console.log( Array.isArray([1, 2, 3]) );
Не запуская код, определите, что выведется на экран в консоль:
console.log( Array.isArray({a: 1, b: 2, c: 3}) );