Восемь типов данных, typeof
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/types.
В JavaScript существует несколько основных типов данных.
В этой главе мы получим о них общее представление, а позже, в соответствующих главах подробно познакомимся с использованием каждого типа в отдельности.
Число «number»
var n = 123; n = 12.345;
Единый тип число используется как для целых, так и для дробных чисел.
Существуют специальные числовые значения Infinity (бесконечность) и NaN (ошибка вычислений).
Например, бесконечность Infinity получается при делении на ноль:
alert( 1 / 0 ); // Infinity
Ошибка вычислений NaN будет результатом некорректной математической операции, например:
alert( "нечисло" * 2 ); // NaN, ошибка
Эти значения формально принадлежат типу «число», хотя, конечно, числами в их обычном понимании не являются.
Особенности работы с числами в JavaScript разобраны в главе Числа.
Число «bigint»
В JavaScript тип «number» не может содержать числа больше, чем 2 53 (или меньше, чем -2 53 для отрицательных). Это техническое ограничение вызвано их внутренним представлением. 2 53 – это достаточно большое число, состоящее из 16 цифр, поэтому чаще всего проблем не возникает. Но иногда нам нужны действительно гигантские числа, например в криптографии или при использовании метки времени («timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Чтобы создать значение типа BigInt , необходимо добавить n в конец числового литерала:
// символ "n" в конце означает, что это BigInt const bigInt = 1234567890123456789012345678901234567890n;
Более подробно тип данных BigInt мы рассмотрим в отдельной главе BigInt.
Строка «string»
var str = "Мама мыла раму"; str = 'Одинарные кавычки тоже подойдут';
В JavaScript одинарные и двойные кавычки равноправны. Можно использовать или те или другие.
Тип символ не существует, есть только строка.
В некоторых языках программирования есть специальный тип данных для одного символа. Например, в языке С это char . В JavaScript есть только тип «строка» string . Что, надо сказать, вполне удобно.
Более подробно со строками мы познакомимся в главе Строки.
Булевый (логический) тип «boolean»
У него всего два значения: true (истина) и false (ложь).
Как правило, такой тип используется для хранения значения типа да/нет, например:
var checked = true; // поле формы помечено галочкой checked = false; // поле формы не содержит галочки
О нём мы поговорим более подробно, когда будем обсуждать логические вычисления и условные операторы.
Специальное значение «null»
Значение null не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения null :
var age = null;
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».
В частности, код выше говорит о том, что возраст age неизвестен.
Специальное значение «undefined»
Значение undefined , как и null , образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл «значение не присвоено».
Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть undefined :
var x; alert( x ); // выведет "undefined"
Можно присвоить undefined и в явном виде, хотя это делается редко:
var x = 123; x = undefined; alert( x ); // "undefined"
В явном виде undefined обычно не присваивают, так как это противоречит его смыслу. Для записи в переменную «пустого» или «неизвестного» значения используется null .
Символы «symbol»
«Символ» представляет собой уникальный идентификатор.
Создаются новые символы с помощью функции Symbol() :
// Создаём новый символ - id let
При создании символу можно дать описание (также называемое имя), в основном использующееся для отладки кода:
// Создаём символ id с описанием (именем) "id" let
Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы. Описание – это просто метка, которая ни на что не влияет.
Например, вот два символа с одинаковым описанием – но они не равны:
let id1 = Symbol("id"); let id2 = Symbol("id"); alert(id1 == id2); // false
Более подробно c символами мы познакомимся в главе Тип данных Symbol.
Объекты «object»
Первые 7 типов называют «примитивными».
Особняком стоит восьмой тип: «объекты».
Он используется для коллекций данных и для объявления более сложных сущностей.
Объявляются объекты при помощи фигурных скобок <. >, например:
var user = < name: "Вася" >;
Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе Объекты.
Оператор typeof
Оператор typeof возвращает тип аргумента.
У него есть два синтаксиса: со скобками и без:
- Синтаксис оператора: typeof x .
- Синтаксис функции: typeof(x) .
Работают они одинаково, но первый синтаксис короче.
Результатом typeof является строка, содержащая тип:
typeof undefined // "undefined" typeof 0 // "number" typeof 1n // "bigint" typeof true // "boolean" typeof "foo" // "string" typeof Symbol() // "symbol" typeof <> // "object" typeof null // "object" (1) typeof function()<> // "function" (2)
Последние две строки помечены, потому что typeof ведёт себя в них по-особому.
- Результат typeof null == «object» – это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле null – это не объект, а отдельный тип данных.
- Функции мы пройдём чуть позже. Пока лишь заметим, что функции не являются отдельным базовым типом в JavaScript, а подвидом объектов. Но typeof выделяет функции отдельно, возвращая для них «function» . На практике это весьма удобно, так как позволяет легко определить функцию.
К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных.
Итого
Есть 5 «примитивных» типов: number , string , boolean , null , undefined и 6-й тип – объекты object .
Очень скоро мы изучим их во всех деталях.
Оператор typeof x позволяет выяснить, какой тип находится в x , возвращая его в виде строки.
Функция как тип данных
С функцией можно работать, как с любым другим типом данных: сохранять в переменную, передавать, возвращать из функции.
Время чтения: меньше 5 мин
Открыть/закрыть навигацию по статье
- Кратко
- Как понять
- Хранение функции в переменной
- Передача функции в вызов другой функции
- Возвращение функции как результат вызова
- Николай Лопин советует
Обновлено 20 декабря 2021
Кратко
Скопировать ссылку «Кратко» Скопировано
Функции — это объект первого класса. Это означает, что функцию можно использовать так же, как и другие типы данных: сохранять в переменную, передавать аргументом и возвращать из функции.
Технически, функция — это объект JavaScript, у которого есть внутренний метод Call ( ) , который добавляет возможность вызова функции.
Если вы хотите узнать о синтаксисе функций, читайте статью function .
Как понять
Скопировать ссылку «Как понять» Скопировано
Во многих языках функции — это специальные конструкции языка. Они не являются типом данных, и набор операций, которые с ними можно делать ограничен — их можно только объявлять и вызывать.
В JavaScript функция — это тип данных, примерно такой же как объект или строка. Это означает, что с ним можно работать так же, как и с любым другим типом данных — сохранять в переменную, передавать в качестве аргумента функции, возвращать из функций.
О функции удобно думать как об объекте, который поддерживает операцию вызова.
Хранение функции в переменной
Скопировать ссылку «Хранение функции в переменной» Скопировано
Функции можно объявлять различными способами. Объявление функции с помощью функционального выражения не что иное, как присваивание безымянной функции переменной:
const answer = function() console.log('42!')> answer()// 42!const answer = function() console.log('42!') > answer() // 42!Можно сохранять в переменную и функцию, объявленную другим способом. При этом оба имени функции будут работать:
function answerNumber() console.log('42!')> const answer = answerNumber answerNumber()// 42!answer()// 42!function answerNumber() console.log('42!') > const answer = answerNumber answerNumber() // 42! answer() // 42!Переменная хранит ссылку на функцию, поэтому мы можем создавать столько переменных, сколько нам нужно и все они будут именами функции:
const answer = function() console.log('42!')> const answerNumber = answerconst fn = answerconst answer = function() console.log('42!') > const answerNumber = answer const fn = answerПередача функции в вызов другой функции
Скопировать ссылку «Передача функции в вызов другой функции» Скопировано
Функция может передаваться в качестве аргумента при вызове другой функции.
Например, функция, которая может выполнить произвольную операцию между двумя числами. Два числа хранятся внутри функции, а операция, которую нужно выполнить, передаётся при вызове:
function performOperation(operation) const a = 10 const b = 99 return operation(a, b)> const sum = performOperation(function(one, two) < return one + two >)console.log(sum)// 109 const result = performOperation(function(num1, num2) < return num1 ** (num1 / num2)>)console.log(result)// 1.2618568830660204function performOperation(operation) const a = 10 const b = 99 return operation(a, b) > const sum = performOperation(function(one, two) return one + two >) console.log(sum) // 109 const result = performOperation(function(num1, num2) return num1 ** (num1 / num2)>) console.log(result) // 1.2618568830660204Таким образом логика операции может определяться вне функции, что делает её гибкой.
Функции, которые ожидают получить другую функцию в качестве параметра — стандартное явление в JavaScript. Даже встроенные методы, такие как for Each ( ) и filter ( ) используют этот подход.
Функции, которые принимают другие функции или возвращают их как аргумент, называются функциями высшего порядка. Такие функции позволяют писать на JS в функциональном стиле.
Другой случай использования — колбэки в асинхронном коде. Иногда необходимо выполнить операцию после того, как закончится какое-то действие. Например, когда пользователь кликнет на кнопку. В этом случае используется метод add Event Listener ( ) , который принимает имя события и колбэк, который нужно вызвать при его наступлении:
document.getElementsByTagName('button')[0].addEventListener('click', function() console.log('пользователь кликнул!')>)document.getElementsByTagName('button')[0].addEventListener('click', function() console.log('пользователь кликнул!') >)Возвращение функции как результат вызова
Скопировать ссылку «Возвращение функции как результат вызова» Скопировано
Функцию можно вернуть как результат работы другой функции. Например, можно сохранить данные для математической операции, но не выполнять её сразу, а вернуть функцию, которая выполнит операцию над указанными числами:
function lazySum(a, b) return function() return a + b >>function lazySum(a, b) return function() return a + b > >Здесь очень легко запутаться во вложенности. При вызове lazy Sum ( ) мы передаём два аргумента. Эти аргументы не используются тут же — мы создаём новую функцию, которая складывает два числа и возвращаем её. После вызова lazy Sum ( ) мы можем сохранить эту функцию в переменную и использовать её, когда нужно:
const performSum = lazySum(99, 1)console.log(performSum)// function lazySum() console.log(performSum())// 100const performSum = lazySum(99, 1) console.log(performSum) // function lazySum() console.log(performSum()) // 100Обратите внимание, что значения параметров a и b остаются доступны внутри вложенной функции. Эта особенность связана с контекстом выполнения и лексическим окружением функции. Такой подход также активно используется при разработке на JavaScript.
На практике
Скопировать ссылку «На практике» Скопировано
Николай Лопин советует
Скопировать ссылку «Николай Лопин советует» Скопировано
Чтобы понять, что в переменной хранится функция, достаточно воспользоваться оператором typeof — для функций он возвращает строку ‘function’ :
const answer = function() console.log('42!')> console.log(typeof answer)// 'function'const answer = function() console.log('42!') > console.log(typeof answer) // 'function'Так как функция технически является объектом, то у функции есть свойства и методы. Например, свойство length вернёт количество параметров функции:
const answer = function() console.log('42!')> console.log(answer.length)// 0 const sum = function(a, b) return a + b> console.log(sum.length)// 2const answer = function() console.log('42!') > console.log(answer.length) // 0 const sum = function(a, b) return a + b > console.log(sum.length) // 2Функциям можно добавлять свойства как обычным объектам. Такой код встречается редко, но не удивляйтесь, если увидите:
const calc = function() <> calc.type = 'numbers' console.log(calc.type)// numbersconst calc = function() > calc.type = 'numbers' console.log(calc.type) // numbersТипы данных в JavaScript: краткое руководство
Типы данных — одна из базовых конструкций в любом языке программирования, на основе которых строятся другие структуры данных. В этой статье преподаватель кампуса Эльбрус Буткемп Адам Балкоев в рамках подготовки к пре курсу JavaScript рассказывает о типах данных в этом языке программирования.
JavaScript (JS) — язык программирования с динамической типизацией. Это означает, что во время объявления переменной не нужно указывать ее тип данных — он определится автоматически при присвоении значения.
Типов данных в JS восемь: number, string, boolean, undefined, object, bigInt, symbol и null. Начинающим программистам предстоит пользоваться шестью из них — на них и остановимся.
number
Тип данных number — числовой. Если вы записываете значение переменной в виде числа, как в коде ниже, то JS автоматически определяет его как number:
let age = 30;С числами в JS можно выполнять различные математические операции: складывать (+), вычитать (-), умножать ( *) и делить. Выглядеть это может, например, так:
let quantity = 10; let price = 2.99; let total = quantity * price; console.log(total); // 29.9В примере выше переменной «количество» присваивается значение 10 (целое число), а переменной «цена» — 2,99 (число с плавающей запятой). В переменной «итог» цена умножается на количество, а результат выводится в консоль.
string
Текст, заключенный в одинарные (‘) или двойные («) кавычки язык программирования автоматически относит к типу данных string, строка.
let name = "Adam";Важно уточнить, что строки в JS неизменяемые: нельзя заменить отдельный символ после ее создания. С уже готовыми строками можно выполнять различные операции, в том числе объединять их, как в примере ниже:
let firstName = "Adam"; let lastName = "Balkoev"; let fullName = firstName + " " + lastName; // fullName will be "Adam Balkoev"
boolean
Следующий тип данных в JS — boolean. Это логический тип, который может принимать только два значения: true или false, правда или ложь.
Например, если мы создадим переменную haveCar со значением true, JS автоматически определит тип как boolean.
Этот тип данных часто используется в операторах if и циклах for и помогает понять, какую часть кода выполнять. Например:
let isTrue = true; let isFalse = false; if (isTrue) < console.log("The value is true"); >elsenull
null в JS — это еще один тип данных, который имеет смысл «ничего» или «значение неизвестно».
Создадим переменную корзина (trash) с пустым значением, которое свидетельствует, что мы не знаем, что находится в корзине:
let trash = null;undefined
Если в JS создать переменную и не присвоить ей никакого значения, язык программирования автоматически определит тип данных в ней как undefined.
Рассмотрим пример: создадим переменную box с пустым значением, которое свидетельствует, что в коробке пока ничего нет:
let box; condole.log(box) // undefinedobject
Рассмотрим этот тип на примере. Напишем объект shop, внутрь которого поместим несколько свойств: название, описание и количество отделов.
let shop =
Значение этой переменной JS автоматически отнесет к типу object. Язык программирования при определении типа данных не проверяет, что находится внутри объекта: он видит структуру и по ней определяет тип.
Отметим, что типы данных bigInt, symbol встречаются значительно реже, а начинающие программисты с ними почти не сталкиваются. Поэтому в этой статье не будет рассматривать их отдельно, а остановимся на ключевом слове typeof.
Ключевое слово typeof
Оператор typeof позволяет определить, какой тип данных скрывается за той или иной переменной.
Поскольку JS присваивает типы данных автоматически, иногда полезно узнать, как язык видит значение переменной. Чтобы увидеть тип данных в терминале, нужно написать консоль с ключевым словом и указанием переменной. Например, так:
let name = "Adam"; console.log(typeof name); // string let age = 30; console.log(typeof age); // number
Катрин Алимова
Вам может также понравиться.

Кто такие свитчеры

27 янв. 2024 г.
Как быстро и правильно гуглить

26 янв. 2024 г.
Типы данных
Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой – число:
// Не будет ошибкой let message = "hello"; message = 123456;Языки программирования, в которых такое возможно, называются «динамически типизированными». Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.
Число
let n = 123; n = 12.345;Числовой тип данных ( number ) представляет как целочисленные значения, так и числа с плавающей точкой.
Существует множество операций для чисел, например, умножение * , деление / , сложение + , вычитание — и так далее.
Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: Infinity , -Infinity и NaN .
-
Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа. Мы можем получить его в результате деления на ноль:
alert( 1 / 0 ); // InfinityИли задать его явно:
alert( Infinity ); // Infinityalert( "не число" / 2 ); // NaN, такое деление является ошибкойЗначение NaN «прилипчиво». Любая математическая операция с NaN возвращает NaN :
alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "не число" / 2 - 1 ); // NaNМатематические операции – безопасны
Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим NaN как результат выполнения.
Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.
Подробнее о работе с числами мы поговорим в главе Числа.
BigInt
В JavaScript тип number не может безопасно работать с числами, большими, чем (2 53 -1) (т. е. 9007199254740991 ) или меньшими, чем -(2 53 -1) для отрицательных чисел.
Если говорить совсем точно, то, технически, тип number может хранить большие целые числа (до 1.7976931348623157 * 10 308 ), но за пределами безопасного диапазона целых чисел ±(2 53 -1) будет ошибка точности, так как не все цифры помещаются в фиксированную 64-битную память. Поэтому можно хранить «приблизительное» значение.
Например, эти два числа (прямо за пределами безопасного диапазона) совпадают:
console.log(9007199254740991 + 1); // 9007199254740992 console.log(9007199254740991 + 2); // 9007199254740992То есть все нечетные целые числа, большие чем (2 53 -1) , вообще не могут храниться в типе number .
В большинстве случаев безопасного диапазона чисел от -(2 53 -1) до (2 53 -1) вполне достаточно, но иногда нам требуется весь диапазон действительно гигантских целых чисел без каких-либо ограничений или пропущенных значений внутри него. Например, в криптографии или при использовании метки времени («timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Чтобы создать значение типа BigInt , необходимо добавить n в конец числового литерала:
// символ "n" в конце означает, что это BigInt const bigInt = 1234567890123456789012345678901234567890n;Так как необходимость в использовании BigInt –чисел появляется достаточно редко, мы рассмотрим их в отдельной главе BigInt. Ознакомьтесь с ней, когда вам понадобятся настолько большие числа.
В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.
Строка
Строка ( string ) в JavaScript должна быть заключена в кавычки.
let str = "Привет"; let str2 = 'Одинарные кавычки тоже подойдут'; let phrase = `Обратные кавычки позволяют встраивать переменные $`;В JavaScript существует три типа кавычек.
- Двойные кавычки: «Привет» .
- Одинарные кавычки: ‘Привет’ .
- Обратные кавычки: `Привет` .
Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.
Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в $ . Например:
let name = "Иван"; // Вставим переменную alert( `Привет, $!` ); // Привет, Иван! // Вставим выражение alert( `результат: $` ); // результат: 3Выражение внутри $ вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную name , или выражение 1 + 2 , или что-то более сложное.
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
alert( "результат: $" ); // результат: $ (двойные кавычки ничего не делают)Мы рассмотрим строки более подробно в главе Строки.
Нет отдельного типа данных для одного символа.
В некоторых языках, например C и Java, для хранения одного символа, например «a» или «%» , существует отдельный тип. В языках C и Java это char .
В JavaScript подобного типа нет, есть только тип string . Строка может содержать ноль символов (быть пустой), один символ или множество.
Булевый (логический) тип
Булевый тип ( boolean ) может принимать только два значения: true (истина) и false (ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».
let nameFieldChecked = true; // да, поле отмечено let ageFieldChecked = false; // нет, поле не отмеченоБулевые значения также могут быть результатом сравнений:
let isGreater = 4 > 1; alert( isGreater ); // true (результатом сравнения будет "да")Мы рассмотрим булевые значения более подробно в главе Логические операторы.
Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше.
Оно формирует отдельный тип, который содержит только значение null :
let age = null;В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.
Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
В приведённом выше коде указано, что значение переменной age неизвестно.
Значение «undefined»
Специальное значение undefined также стоит особняком. Оно формирует тип из самого себя так же, как и null .
Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined :
let age; alert(age); // выведет "undefined"Технически мы можем присвоить значение undefined любой переменной:
let age = 123; // изменяем значение на undefined age = undefined; alert(age); // "undefined"…Но так делать не рекомендуется. Обычно null используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined – для проверок, была ли переменная назначена.
Объекты и символы
Тип object (объект) – особенный.
Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.
Тип symbol (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
Оператор typeof
Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.
У него есть две синтаксические формы:
// Обычный синтаксис typeof 5 // Выведет "number" // Синтаксис, напоминающий вызов функции (встречается реже) typeof(5) // Также выведет "number"Если передается выражение, то нужно заключать его в скобки, т.к. typeof имеет более высокий приоритет, чем бинарные операторы:
typeof 50 + " Квартир"; // Выведет "number Квартир" typeof (50 + " Квартир"); // Выведет "string"Другими словами, скобки необходимы для определения типа значения, которое получилось в результате выполнения выражения в них.
Вызов typeof x возвращает строку с именем типа:
typeof undefined // "undefined" typeof 0 // "number" typeof 10n // "bigint" typeof true // "boolean" typeof "foo" // "string" typeof Symbol("id") // "symbol" typeof Math // "object" (1) typeof null // "object" (2) typeof alert // "function" (3)Последние три строки нуждаются в пояснении:
- Math — это встроенный объект, который предоставляет математические операции и константы. Мы рассмотрим его подробнее в главе Числа. Здесь он служит лишь примером объекта.
- Результатом вызова typeof null является «object» . Это официально признанная ошибка в typeof , ведущая начало с времён создания JavaScript и сохранённая для совместимости. Конечно, null не является объектом. Это специальное значение с отдельным типом.
- Вызов typeof alert возвращает «function» , потому что alert является функцией. Мы изучим функции в следующих главах, где заодно увидим, что в JavaScript нет специального типа «функция». Функции относятся к объектному типу. Но typeof обрабатывает их особым образом, возвращая «function» . Так тоже повелось от создания JavaScript. Формально это неверно, но может быть удобным на практике.
Итого
В JavaScript есть 8 основных типов данных.
- Семь из них называют «примитивными» типами данных:
- number для любых чисел: целочисленных или чисел с плавающей точкой; целочисленные значения ограничены диапазоном ±(2 53 -1) .
- bigint для целых чисел произвольной длины.
- string для строк. Строка может содержать ноль или больше символов, нет отдельного символьного типа.
- boolean для true / false .
- null для неизвестных значений – отдельный тип, имеющий одно значение null .
- undefined для неприсвоенных значений – отдельный тип, имеющий одно значение undefined .
- symbol для уникальных идентификаторов.
- object для более сложных структур данных.
Оператор typeof позволяет нам увидеть, какой тип данных сохранён в переменной.
- Имеет две формы: typeof x или typeof(x) .
- Возвращает строку с именем типа. Например, «string» .
- Для null возвращается «object» – это ошибка в языке, на самом деле это не объект.
В следующих главах мы сконцентрируемся на примитивных значениях, а когда познакомимся с ними, перейдём к объектам.