StudyCode
К практике
НачальныйJavaScriptтипыtypeof
🏷️JuniorJavaScriptтипыtypeofnullundefinedSymbol

Типы данных

8 типов JavaScript: примитивы и объекты, typeof, null vs undefined, Symbol.

JS8 типов данных JavaScript

7 примитивных типов — хранятся по значению, неизменяемые

number42, 3.14, NaN, Infinity
string"привет", `шаблон`
booleantrue, false
undefinedlet x; — не задана
nullnull — намеренное отсутствие
bigint9007199254740991n
symbolSymbol('id')
Объектный тип (1): object — все остальное: объекты, массивы, функции, null
Язык примеров:
Шаг 1 из 2
1

8 типов JavaScript

Динамическая типизация

JavaScript — динамически типизированный язык. Переменная не привязана к типу — тип привязан к значению:

javascript
let x = 42;         // number
x = "привет";       // теперь string
x = true;           // теперь boolean
x = { a: 1 };      // теперь object

Семь примитивных типов

javascript
// number — числа (и целые, и дробные — один тип)
let n = 42;
let pi = 3.14;
let big = 1e9;       // 1000000000
let inf = Infinity;  // специальное значение
let nan = NaN;       // "Not a Number" — тоже number!

// string — строки
let s1 = "двойные кавычки";
let s2 = 'одинарные кавычки';
let s3 = `шаблонная строка: ${n + 1}`;

// boolean
let yes = true;
let no = false;

// bigint — целые числа произвольного размера
let huge = 9007199254740991n;  // суффикс n

// null — намеренное отсутствие значения
let empty = null;

// undefined — переменная объявлена, значение не задано
let notSet;          // undefined
let alsoUndef = undefined;

// symbol — уникальный идентификатор
let id = Symbol("id");
let id2 = Symbol("id");
id === id2;  // false — каждый Symbol уникален

Один объектный тип

javascript
// object — всё остальное
let obj = { key: "value" };
let arr = [1, 2, 3];       // массив — тоже object
let fn = function() {};    // функция — объект (специальный)
let date = new Date();     // Date — объект
let re = /pattern/;        // RegExp — объект
JavaScript
// typeof — проверка типа

typeof 42           // "number"
typeof 3.14         // "number"
typeof NaN          // "number" (!)
typeof Infinity     // "number"

typeof "hello"      // "string"
typeof `template`  // "string"

typeof true         // "boolean"
typeof false        // "boolean"

typeof undefined    // "undefined"

typeof null         // "object" ← знаменитый баг JS с 1995 года
typeof {}           // "object"
typeof []           // "object" (массив — тоже object!)
typeof new Date()   // "object"

typeof function(){} // "function" (особый случай для функций)
typeof (() => {})   // "function"

typeof Symbol()     // "symbol"
typeof 42n          // "bigint"

// Как правильно проверить:
Array.isArray([])   // true  — для массивов
value === null      // true  — для null
value instanceof Date  // для Date и других классов