Давайте посмотрим, что выведет оператор typeof
для объекта. Как и ожидалось, мы видим строку
'object'
.
console.log(typeof {}); // выведет 'object'
А вот если проверить через typeof
массив,
то здесь поведение уже будет не очень ожидаемым
- результатом также будет 'object'
,
а не 'array'
, как можно было бы подумать:
console.log(typeof []); // тоже выведет 'object'
Дело в том, что на самом деле в JavaScript нет отдельного типа данных для массивов - каждый массив представляет собой частный случай объекта.
Объекты (в том числе и массивы, как вы уже знаете) считаются сложными типами данных. Строки, числа, логические значения считаются простыми, или примитивными типами данных. Их часто так и называют - примитивы, подразумевая все то, что не является объектом.
В JavaScript шесть примитивных типов данных: string, number, boolean, null, undefined, symbol. Запомните их количество и названия - это часто спрашивают на собеседованиях.
Не подсматривая в учебник перечислите все примитивные типы данных в 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}) );