Типизация массивов и объектов в JavaScript

Давайте посмотрим, что выведет оператор 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}) );