К практике
Начальный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 и других классов