[БЕЗ_ЗВУКА] В этом видео мы начнём знакомиться с типами данных. Их в JavaScript шесть видов. Это числа, строки, булевые величины, неопределённые величины, объекты и массивы, а также функции. Сегодня мы поговорим про первые четыре вида, про остальные мы поговорим на следующей неделе. Для того, чтобы определить число в JavaScript, мы используем запись, состоящую из цифр. Для определения целого числа 123 мы используем запись из цифр — 123. Если мы хотим определить дробное число, например, 12,3, то мы пишем 12.3. По умолчанию в JavaScript используется десятичная система счисления. Если мы хотим определить другую систему счисления, то мы можем использовать префикс. Для шестнадцатеричной системы счисления мы используем префикс 0х, для восьмеричной — 0o, а для двоичной — 0b. В JavaScript для хранения чисел отводится 64 бита, и можно подумать, что максимальное целое число, которое представимо в JavaScript, выглядит вот так, то есть 2^64. На самом деле это не совсем так. Во-первых, один бит нужен для того, чтобы сохранить знак числа, несколько бит — для того, чтобы сохранить позицию десятичной точки, поэтому максимальное целое число, которое представимо в JavaScript, записывается следующим образом. Вы всегда можете его получить, если вызовете свойства MAX_SAFE_INTEGER у объекта Number. Если вам необходимо работать с большими значениями, то вы можете воспользоваться экспоненциальной записью числа. Она представляется вот так. Слева от e стоит основание экспоненты — это любое десятичное число, справа — степень экспоненты. Следует помнить, что если вы работаете не с целыми числами, то вычисления будут неточными. Также в JavaScript существуют два особенных числа — это +∞ и −∞. Если из бесконечности вычесть единицу, мы получим по-прежнему бесконечность, из чего делаем вывод, что +∞ больше, чем любое представимое в JavaScript число. Аналогичным образом себя ведёт −∞. Кроме того, в JavaScript есть особенное число NaN — Not-a-Number. Оно возникает всякий раз, когда мы выполняем недопустимые арифметические операции (например, деление нуля на ноль, вычитание из бесконечности бесконечность) или когда мы совершаем алгебраические операции не над числами. Следующий тип данных — это строки. Для того, чтобы представить строку в JavaScript, мы пишем произвольный текст и обрамляем его одинарными или двойными кавычками. Оба этих варианта являются допустимыми, однако я рекомендую выбрать вам заранее, какой тип представления строки вы будете использовать, чтобы ваш код выглядел одинаково. Внутри строки вы можете использовать Unicode-символы, а также символы одинарной или двойной кавычки. Чтобы использовать символы кавычки, вам нужно их экранировать, то есть писать обратный слэш. Подробнее о том, как работать со строками, мы поговорим на следующей неделе. Ещё один тип данных — логический, который представляет булевы величины true и false. Самый простой способ получить логическую величину — это выполнить операцию сравнения. Самый необычный тип данных — это неопределённые величины. В JavaScript они представлены двумя значениями: undefined и null. Если вы определяете переменную, то по умолчанию её значение не определено, то есть равно undefined. Для того, чтобы определить тип данных, мы можем воспользоваться оператором typeof, который возвращает результат в виде строки. Если мы вызываем typeof от числа 0, то мы получаем результат number, если вызываем typeof от строки 0, то получаем результат string. Для того, чтобы преобразовать явно строку к числу, мы можем воспользоваться операторами parseInt и parseFloat. Работают они следующим образом. ParseInt принимает два аргумента. Первый из них — это строка, которую нужно привести к числу; если первый аргумент — не строка, то мы неявно приводим его к строке при помощи метода toString. Второй аргумент — это система счисления. ParseInt работает без второго аргумента — если вы не передаёте систему счисления, то parseInt подбирает её самостоятельно, однако в зависимости от реализации он может это делать по разному, поэтому я вам настоятельно рекомендую всегда указывать систему счисления. Если первый символ строки parseInt не разбирает, то он возвращает NaN — не число. Если строка начинается с числа, а после него идёт не число, то parseInt возвращает число, которое он смог прочитать. Парный к нему оператор — parseFloat. В отличие от parseInt, он принимает один аргумент в строку и работает всегда в десятичной системе счисления. Он может принимать как строки, представляющие числа с точкой, так и в экспоненциальной записи. Если передать в parseFloat строку, которая начинается не с числа, то мы получим NaN — так же как и в parseInt.