значением какого типа является infinity в javascript
Примитивные типы данных
Пришло время познакомиться с примитивными типами данных в JavaScript. В самом простом случае, когда мы объявляем переменную вот так:
то переменная принимает числовой тип (number). Этот пример показывает, что тип переменной определяется типом данных, которые мы ей присваиваем. Если переменной присвоить строку:
то переменная b принимает строковый тип. В JavaScript существует семь основных типов данных. Рассмотрим их по порядку.
Числовой тип (number)
Числовой тип данных представляет как целочисленные значения, так и числа с плавающей точкой. Например, обе эти переменные будут относиться к числовому типу:
Однако, на практике чаще всего используются целые и приближенные к вещественным.
Оператор typeof
Чтобы узнать тип переменной используется оператор typeof, который имеет такой синтаксис:
его можно вызывать как со скобками, так и без скобок. Обычно используют первый вариант. Выведем тип переменной a:
Мы видим значение number – числовой тип.
Infinity и NaN
Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому же типу данных:
Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа. Мы можем получить его в результате деления на ноль:
или задать его явно:
Мы можем также получить бесконечность, если попытаемся записать в переменную очень большое число, которое выходит за пределы представления чисел в JavaScript. Например, такое:
Следующее значение NaN (от англ. Not a Number – не число) означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
Значение NaN «прилипчиво». Любая операция с NaN возвращает NaN:
Значения Infinity и NaN хотя и относятся к числовым типам, но скорее являются индикаторами, говорящими разработчику скрипта что пошло не так.
Строковый тип (string)
Как мы говорили на предыдущем занятии, строки можно задавать через такие кавычки:
Получим строку «Значение a = 3». Все это работает только с обратными кавычками. Если их заменить на простые, то никакой подстановки не произойдет:
Тем, кто знаком с другими языками программирования следует знать, что в JavaScript нет типа данных для отдельного символа (типа char). Здесь есть только строки и даже один символ – это строка из одного символа.
А как быть, если мы хотим в строке записать кавычки? Например, так:
Есть несколько способов это сделать. Первый – заменить двойные кавычки всей строки на одинарные:
Второй способ – использовать так называемое экранирование символов:
мы здесь перед каждой кавычкой внутри строки поставили обратный слеш. Это называется экранированием символов. На практике используются оба способа, так что выбирайте любой удобный для себя. Кстати, если нужно просто отобразить обратный слеш, то его следует записать так:
Булевый (логический) тип
Булевый тип (boolean) может принимать только два значения: true (истина) и false (ложь). Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно». Например:
Булевые значения также могут быть получены из результатов сравнения:
и часто применяются в условных операторах, о которых мы будем говорить на последующих занятиях.
Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше. Оно формирует отдельный тип, который содержит только значение null:
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
Значение «undefined»
Это свой тип данных, который имеет только одно значение undefined, означающее, что значение не было присвоено. Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined:
По идее мы можем присвоить значение undefined любой переменной:
Но так делать не рекомендуется. Если нам нужно отметить, что переменная не содержит данных, то для этого используется значение null, а undefined – только для проверок: была ли переменная инициализирована или по каким-то причинам ей «забыли» присвоить значение.
Тип Symbol
Это новый тип данных (symbol), который впервые появился в спецификации ES6. Он используется для создания уникальных идентификаторов. Например, так:
И в большей степени он удобен для дальнейшего развития JavaScript. Чтобы можно было добавлять новые идентификаторы, не меняя код, в котором он уже мог использоваться.
Символы создаются конструктором Symbol() и могут дополняться необязательным описанием:
Их уникальность можно проверить оператором идентичности, о котором мы будем говорить на следующих занятиях. Здесь приведу лишь пример:
В некоторой степени они похожи на объекты, но относятся к примитивным типам.
Если сейчас вам не совсем понятно, что такое Symbol, просто пропустите этот момент. Когда придет время для его использования, все встанет на свои места.
Видео по теме
JavaScipt #1: что это такое, с чего начать, как внедрять и запускать
JavaScipt #2: способы объявления переменных и констант в стандарте ES6+
JavaScript #3: примитивные типы number, string, Infinity, NaN, boolean, null, undefined, Symbol
JavaScript #4: приведение типов, оператор присваивания, функции alert, prompt, confirm
JavaScript #6: условные операторы if и switch, сравнение строк, строгое сравнение
JavaScript #7: операторы циклов for, while, do while, операторы break и continue
JavaScript #8: объявление функций по Function Declaration, аргументы по умолчанию
JavaScript #9: функции по Function Expression, анонимные функции, callback-функции
JavaScript #10: анонимные и стрелочные функции, функциональное выражение
JavaScript #11: объекты, цикл for in
JavaScript #12: методы объектов, ключевое слово this
JavaScript #13: клонирование объектов, функции конструкторы
JavaScript #14: массивы (array), методы push, pop, shift, unshift, многомерные массивы
JavaScript #15: методы массивов: splice, slice, indexOf, find, filter, forEach, sort, split, join
JavaScript #16: числовые методы toString, floor, ceil, round, random, parseInt и другие
JavaScript #18: коллекции Map и Set
JavaScript #19: деструктурирующее присваивание
JavaScript #20: рекурсивные функции, остаточные аргументы, оператор расширения
JavaScript #21: замыкания, лексическое окружение, вложенные функции
JavaScript #22: свойства name, length и методы call, apply, bind функций
JavaScript #23: создание функций (new Function), функции setTimeout, setInterval и clearInterval
© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Типы данных в JavaScript
В JavaScript определены семь встроенных типов данных. Шесть примитивных типов и один тип, который представляет из себя структуру данных:
Этот тип представляет из себя число двойной точности, подробнее о нём можно прочитать здесь.
Определение типов оператором typeof
Но есть два значения, для которых оператор typeof не совсем корректно отражает их тип:
Для функций оператор typeof возвращает тип “function”, хотя в действительности функция не является отдельным встроенным типом языка, и является подвидом объекта, как и другие структуры данных.
Примитивные и ссылочные типы данных
Особенность примитивных типов данных заключается в том, что они неизменяемы (иммутабельны) и передаются по значению. В отличие от объектов, которые передаются по ссылке. При этом важно понимать, что объект или примитив, это не сама переменная, а соответствующий указатель на объект или само значение примитивного типа, которое этой переменной присвоено.
Например рассмотрим следующий код:
Что происходит после вызова этой функций?
Этот пример отражает то, что примитивы передаются по значению и какие-либо действия производятся над копиями этих значений. Поэтому если явно не возвращать или не присваивать новый результат в соответствующие переменные, то никаких изменений переменных не произойдет.
Теперь рассмотрим как передаются значения объектов:
Почему в данном случае свойство объекта изменилось, хотя никаких дополнительных действий по возврату нового значения и его присваивания не происходило?
В этом случае важно понимать, что переменная содержит не сам объект, а грубо говоря указатель (ссылку) на то место в памяти, где этот объект хранится. Поэтому параметром в функцию будет передаваться именно это ссылка объект и Запись Окружения этой функции после вызова будет выглядеть так:
Обертки примитивных типов в JavaScript
Что происходит когда вызывается какой-либо метод у примитивного типа данных, например:
Явно этот код можно записать так:
И именно поэтому вызов следующих методов будет лишь возвращать новые значения и никак не повлияет на исходную переменную str :
Обычно не принято явно вызывать конструкторы для примитивных типов, так как они предназначены только для внутреннего использования и явное их использование без четкого понимания их поведения может приводить к различным ошибкам.
Типы данных JavaScript
Здравствуйте уважаемые читатели! Любая программа, на каком бы языке она была написана, оперирует некоторыми данными: стоимость товара, температура воздуха, имя стилевого класса, цвет шрифта. Не составляют исключения и web-сценарии написанные на языке javascript. Причем javascript может работать с данными относящимся к разным типам. Сегодня и поговорим об этих типах данных.
Получая данные из реального мира человек не задумываясь делит их на различные группы: цифры, буквы, звуки. Также и javascript разделяет данные на типы. Причем тип данных описывает их возможные значения и набор применимых к ним операций.
Типы данных в javascript можно разделить на две категории: простые типы и составные. К простым типам относятся:
К простым типам также относятся два специальных значения:
К составным типам относятся более сложные данные:
Далее поговорим о простых типах подробнее.
Строки в javascript или тип данных String
Строковые данные — это последовательности букв, цифр, знаков препинания, пробелов и других символов заключенные в одинарные или двойные кавычки. Причем строки заключенные в двойные кавычки могут содержать одинарные кавычки и наоборот. Примеры строк:
«это текстовая строка»
‘1234567890’
Кроме букв, цифр и знаков препинания строки могут содержать специальные символы:
\f | прогон листа |
\n | перевод строки |
\r | возврат каретки |
\t | табуляция |
Кроме того, для того чтобы в строке заключенной в двойные кавычки можно было использовать двойные кавычки, нужно их экранировать с помощью обратного слэша (\). Тоже самое касается и одинарных кавычек:
var str = «строка в которой используются \»двойные\» кавычки»
var str = ‘строка в которой используются \’одинарные\’ кавычки’
Каждый символ в строке имеет свой номер. Нумерация символов в строке начинается с нуля. Так первый символ в строке находится под индексом 0, второй под индексом 1 и так далее. Чтобы обратиться к отдельным символам в строке к названию переменной содержащей строку необходимо приписать номер символа заключенный в квадратные скобки:
var str = «строка»;
alert (str[1]);
Чтобы узнать количество символов в строке используется свойство строки length:
var str = «строка»;
alert (str.length);
Одна из самых частых операций выполняемых над строками при написании javascript-сценариев это объединение строк или конкатенация. Для объединения двух и более строк в javascript применяется оператор + (плюс). При конкатенации каждая последующая строка добавляется в конец предыдущей:
var str1 = «Привет «;
var str2 = «мир»;
alert (str1 + str2 + «!»);
Числа в javascript или тип данных Number
Числовые данные — это обычные числа, над которыми можно производить различные арифметические действия. Для разделения дробной и целой части используется точка (.):
Все числа в javascript представляются в виде вещественных значений (с плавающей точкой). Для представления чисел используется 64-битный формат, который способен представлять числа в диапазоне от 5e-324 до 1.7976931348623157e+308.
Для представления отрицательных значений перед числовым литералом ставится знак минус (-):
Числа могут быть представлены в экспоненциальной форме:
Специальные числовые значения NaN и Infinity в JavaScript
Значение бесконечности можно получить при делении числа на 0:
alert (321/0); //Infinity
Кроме Infinity и NaN в языке javascript имеются еще несколько числовых констант:
Логический тип данных
var x = 5;
if (x == 5)
alert («x равно 5»);
else
alert («x не равно 5»);
Любое значение любого типа данных может быть преобразовано в булево значение. Причем только шесть значений в результате преобразования дают значение false:
Специальные значения null и undefined
В JavaScript есть еще и сложные типы данных, но их мы рассмотрим в следующих статьях. На этом все! До новых встреч!
Восемь типов данных, typeof
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/types.
В JavaScript существует несколько основных типов данных.
В этой главе мы получим о них общее представление, а позже, в соответствующих главах подробно познакомимся с использованием каждого типа в отдельности.
Число «number»
Единый тип число используется как для целых, так и для дробных чисел.
Существуют специальные числовые значения Infinity (бесконечность) и NaN (ошибка вычислений).
Например, бесконечность Infinity получается при делении на ноль:
Ошибка вычислений NaN будет результатом некорректной математической операции, например:
Эти значения формально принадлежат типу «число», хотя, конечно, числами в их обычном понимании не являются.
Особенности работы с числами в JavaScript разобраны в главе Числа.
Число «bigint»
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Более подробно тип данных BigInt мы рассмотрим в отдельной главе BigInt.
Строка «string»
В JavaScript одинарные и двойные кавычки равноправны. Можно использовать или те или другие.
Более подробно со строками мы познакомимся в главе Строки.
Булевый (логический) тип «boolean»
У него всего два значения: true (истина) и false (ложь).
Как правило, такой тип используется для хранения значения типа да/нет, например:
О нём мы поговорим более подробно, когда будем обсуждать логические вычисления и условные операторы.
Специальное значение «null»
Значение null не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения null :
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».
В частности, код выше говорит о том, что возраст age неизвестен.
Специальное значение «undefined»
Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть undefined :
Можно присвоить undefined и в явном виде, хотя это делается редко:
Символы «symbol»
«Символ» представляет собой уникальный идентификатор.
Создаются новые символы с помощью функции Symbol() :
При создании символу можно дать описание (также называемое имя), в основном использующееся для отладки кода:
Символы гарантированно уникальны. Даже если мы создадим множество символов с одинаковым описанием, это всё равно будут разные символы. Описание – это просто метка, которая ни на что не влияет.
Например, вот два символа с одинаковым описанием – но они не равны:
Более подробно c символами мы познакомимся в главе Тип данных Symbol.
Объекты «object»
Первые 7 типов называют «примитивными».
Особняком стоит восьмой тип: «объекты».
Он используется для коллекций данных и для объявления более сложных сущностей.
Объявляются объекты при помощи фигурных скобок <. >, например:
Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе Объекты.
Оператор typeof
Оператор typeof возвращает тип аргумента.
У него есть два синтаксиса: со скобками и без:
Работают они одинаково, но первый синтаксис короче.
Результатом typeof является строка, содержащая тип:
Последние две строки помечены, потому что typeof ведёт себя в них по-особому.
К работе с типами мы также вернёмся более подробно в будущем, после изучения основных структур данных.
Итого
Очень скоро мы изучим их во всех деталях.
Типы данных
Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой – число:
Языки программирования, в которых такое возможно, называются «динамически типизированными». Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.
Число
Числовой тип данных ( number ) представляет как целочисленные значения, так и числа с плавающей точкой.
Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.
Мы можем получить его в результате деления на ноль:
Или задать его явно:
NaN означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
Значение NaN «прилипчиво». Любая операция с NaN возвращает NaN :
Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим NaN как результат выполнения.
Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.
Подробнее о работе с числами мы поговорим в главе Числа.
BigInt
Для большинства случаев этого достаточно. Но иногда нам нужны действительно гигантские числа, например, в криптографии или при использовании метки времени («timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.
Строка
Строка ( string ) в JavaScript должна быть заключена в кавычки.
В JavaScript существует три типа кавычек.
Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
Мы рассмотрим строки более подробно в главе Строки.
Булевый (логический) тип
Булевый тип ( boolean ) может принимать только два значения: true (истина) и false (ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».
Булевые значения также могут быть результатом сравнений:
Мы рассмотрим булевые значения более подробно в главе Логические операторы.
Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше.
Оно формирует отдельный тип, который содержит только значение null :
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.
Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
В приведённом выше коде указано, что значение переменной age неизвестно.
Значение «undefined»
Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined :
Технически мы можем присвоить значение undefined любой переменной:
…Но так делать не рекомендуется. Обычно null используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined – для проверок, была ли переменная назначена.
Объекты и символы
Тип object (объект) – особенный.
Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.
Тип symbol (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
Оператор typeof
Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.
У него есть две синтаксические формы:
Другими словами, он работает со скобками или без скобок. Результат одинаковый.
Вызов typeof x возвращает строку с именем типа:
Последние три строки нуждаются в пояснении:
Итого
В JavaScript есть 8 основных типов.
Оператор typeof позволяет нам увидеть, какой тип данных сохранён в переменной.
В следующих главах мы сконцентрируемся на примитивных значениях, а когда познакомимся с ними, перейдём к объектам.