Значением какого типа является infinity в javascript
Перейти к содержимому

Значением какого типа является infinity в javascript

  • автор:

Data types

A value in JavaScript is always of a certain type. For example, a string or a number.

There are eight basic data types in JavaScript. Here, we’ll cover them in general and in the next chapters we’ll talk about each of them in detail.

We can put any type in a variable. For example, a variable can at one moment be a string and then store a number:

Programming languages that allow such things, such as JavaScript, are called “dynamically typed”, meaning that there exist data types, but variables are not bound to any of them.

Number

The number type represents both integer and floating point numbers.

There are many operations for numbers, e.g. multiplication * , division / , addition + , subtraction — , and so on.

Besides regular numbers, there are so-called “special numeric values” which also belong to this data type: Infinity , -Infinity and NaN .

Infinity represents the mathematical Infinity ∞. It is a special value that’s greater than any number.

We can get it as a result of division by zero:

Or just reference it directly:

NaN represents a computational error. It is a result of an incorrect or an undefined mathematical operation, for instance:

NaN is sticky. Any further mathematical operation on NaN returns NaN :

So, if there’s a NaN somewhere in a mathematical expression, it propagates to the whole result (there’s only one exception to that: NaN ** 0 is 1 ).

Doing maths is “safe” in JavaScript. We can do anything: divide by zero, treat non-numeric strings as numbers, etc.

The script will never stop with a fatal error (“die”). At worst, we’ll get NaN as the result.

Special numeric values formally belong to the “number” type. Of course they are not numbers in the common sense of this word.

We’ll see more about working with numbers in the chapter Numbers.

BigInt

In JavaScript, the “number” type cannot safely represent integer values larger than (2 53 -1) (that’s 9007199254740991 ), or less than -(2 53 -1) for negatives.

To be really precise, the “number” type can store larger integers (up to 1.7976931348623157 * 10 308 ), but outside of the safe integer range ±(2 53 -1) there’ll be a precision error, because not all digits fit into the fixed 64-bit storage. So an “approximate” value may be stored.

For example, these two numbers (right above the safe range) are the same:

So to say, all odd integers greater than (2 53 -1) can’t be stored at all in the “number” type.

For most purposes ±(2 53 -1) range is quite enough, but sometimes we need the entire range of really big integers, e.g. for cryptography or microsecond-precision timestamps.

BigInt type was recently added to the language to represent integers of arbitrary length.

A BigInt value is created by appending n to the end of an integer:

As BigInt numbers are rarely needed, we don’t cover them here, but devoted them a separate chapter BigInt. Read it when you need such big numbers.

Right now, BigInt is supported in Firefox/Chrome/Edge/Safari, but not in IE.

You can check MDN BigInt compatibility table to know which versions of a browser are supported.

String

A string in JavaScript must be surrounded by quotes.

In JavaScript, there are 3 types of quotes.

  1. Double quotes: "Hello" .
  2. Single quotes: ‘Hello’ .
  3. Backticks: `Hello` .

Double and single quotes are “simple” quotes. There’s practically no difference between them in JavaScript.

Backticks are “extended functionality” quotes. They allow us to embed variables and expressions into a string by wrapping them in $ <…>, for example:

The expression inside $ <…>is evaluated and the result becomes a part of the string. We can put anything in there: a variable like name or an arithmetical expression like 1 + 2 or something more complex.

Please note that this can only be done in backticks. Other quotes don’t have this embedding functionality!

We’ll cover strings more thoroughly in the chapter Strings.

In some languages, there is a special “character” type for a single character. For example, in the C language and in Java it is called “char”.

In JavaScript, there is no such type. There’s only one type: string . A string may consist of zero characters (be empty), one character or many of them.

Boolean (logical type)

The boolean type has only two values: true and false .

This type is commonly used to store yes/no values: true means “yes, correct”, and false means “no, incorrect”.

Boolean values also come as a result of comparisons:

We’ll cover booleans more deeply in the chapter Logical operators.

The “null” value

The special null value does not belong to any of the types described above.

It forms a separate type of its own which contains only the null value:

In JavaScript, null is not a “reference to a non-existing object” or a “null pointer” like in some other languages.

It’s just a special value which represents “nothing”, “empty” or “value unknown”.

The code above states that age is unknown.

The “undefined” value

The special value undefined also stands apart. It makes a type of its own, just like null .

The meaning of undefined is “value is not assigned”.

If a variable is declared, but not assigned, then its value is undefined :

Technically, it is possible to explicitly assign undefined to a variable:

…But we don’t recommend doing that. Normally, one uses null to assign an “empty” or “unknown” value to a variable, while undefined is reserved as a default initial value for unassigned things.

Objects and Symbols

The object type is special.

All other types are called “primitive” because their values can contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store collections of data and more complex entities.

Being that important, objects deserve a special treatment. We’ll deal with them later in the chapter Objects, after we learn more about primitives.

The symbol type is used to create unique identifiers for objects. We have to mention it here for the sake of completeness, but also postpone the details till we know objects.

The typeof operator

The typeof operator returns the type of the operand. It’s useful when we want to process values of different types differently or just want to do a quick check.

A call to typeof x returns a string with the type name:

The last three lines may need additional explanation:

  1. Math is a built-in object that provides mathematical operations. We will learn it in the chapter Numbers. Here, it serves just as an example of an object.
  2. The result of typeof null is "object" . That’s an officially recognized error in typeof , coming from very early days of JavaScript and kept for compatibility. Definitely, null is not an object. It is a special value with a separate type of its own. The behavior of typeof is wrong here.
  3. The result of typeof alert is "function" , because alert is a function. We’ll study functions in the next chapters where we’ll also see that there’s no special “function” type in JavaScript. Functions belong to the object type. But typeof treats them differently, returning "function" . That also comes from the early days of JavaScript. Technically, such behavior isn’t correct, but can be convenient in practice.

You may also come across another syntax: typeof(x) . It’s the same as typeof x .

To put it clear: typeof is an operator, not a function. The parentheses here aren’t a part of typeof . It’s the kind of parentheses used for mathematical grouping.

Usually, such parentheses contain a mathematical expression, such as (2 + 2) , but here they contain only one argument (x) . Syntactically, they allow to avoid a space between the typeof operator and its argument, and some people like it.

Some people prefer typeof(x) , although the typeof x syntax is much more common.

Summary

There are 8 basic data types in JavaScript.

  • Seven primitive data types:
    • number for numbers of any kind: integer or floating-point, integers are limited by ±(2 53 -1) .
    • bigint for integer numbers of arbitrary length.
    • string for strings. A string may have zero or more characters, there’s no separate single-character type.
    • boolean for true / false .
    • null for unknown values – a standalone type that has a single value null .
    • undefined for unassigned values – a standalone type that has a single value undefined .
    • symbol for unique identifiers.
    • object for more complex data structures.

    The typeof operator allows us to see which type is stored in a variable.

    • Usually used as typeof x , but typeof(x) is also possible.
    • Returns a string with the name of the type, like "string" .
    • For null returns "object" – this is an error in the language, it’s not actually an object.

    In the next chapters, we’ll concentrate on primitive values and once we’re familiar with them, we’ll move on to objects.

    Типы данных

    Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.

    Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.

    Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой – число:

    Языки программирования, в которых такое возможно, называются «динамически типизированными». Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.

    Число

    Числовой тип данных ( number ) представляет как целочисленные значения, так и числа с плавающей точкой.

    Существует множество операций для чисел, например, умножение * , деление / , сложение + , вычитание — и так далее.

    Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: Infinity , -Infinity и NaN .

    Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.

    Мы можем получить его в результате деления на ноль:

    Или задать его явно:

    NaN означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:

    Значение NaN «прилипчиво». Любая математическая операция с NaN возвращает NaN :

    Если где-то в математическом выражении есть NaN , то оно распространяется на весь результат (есть только одно исключение: NaN ** 0 равно 1 ).

    Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.

    Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим NaN как результат выполнения.

    Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.

    Подробнее о работе с числами мы поговорим в главе Числа.

    BigInt

    В JavaScript тип number не может безопасно работать с числами, большими, чем (2 53 -1) (т. е. 9007199254740991 ) или меньшими, чем -(2 53 -1) для отрицательных чисел. Технически, тип number может хранить и гораздо большие значения (вплоть до 1.7976931348623157 * 10 308 ), однако за пределами безопасного диапазона ±(2 53 -1) многие из чисел не могут быть представлены с помощью этого типа данных из-за ограничений, вызванных внутренним представлением чисел в двоичной форме. Например, нечётные числа, большие, чем (2 53 -1) , невозможно хранить при помощи типа number , они с разной точностью будут автоматически округляться до чётных значений. В то же время некоторые чётные числа, большие, чем (2 53 -1) , при помощи типа number хранить технически возможно (однако не стоит этого делать во избежание дальнейших ошибок).

    Для большинства случаев достаточно безопасного диапазона чисел от -(2 53 -1) до (2 53 -1) . Но иногда нам нужен диапазон действительно гигантских целых чисел без каких-либо ограничений или пропущенных значений внутри него. Например, в криптографии или при использовании метки времени («timestamp») с микросекундами.

    Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.

    Чтобы создать значение типа BigInt , необходимо добавить n в конец числового литерала:

    Так как BigInt -числа нужны достаточно редко, мы рассмотрим их в отдельной главе BigInt. Ознакомьтесь с ней, когда вам понадобятся настолько большие числа.

    В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.

    Строка

    Строка ( string ) в JavaScript должна быть заключена в кавычки.

    В JavaScript существует три типа кавычек.

    1. Двойные кавычки: "Привет" .
    2. Одинарные кавычки: ‘Привет’ .
    3. Обратные кавычки: `Привет` .

    Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.

    Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в $ <…>. Например:

    Выражение внутри $ <…>вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную name , или выражение 1 + 2 , или что-то более сложное.

    Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!

    Мы рассмотрим строки более подробно в главе Строки.

    В некоторых языках, например C и Java, для хранения одного символа, например "a" или "%" , существует отдельный тип. В языках C и Java это char .

    В JavaScript подобного типа нет, есть только тип string . Строка может содержать ноль символов (быть пустой), один символ или множество.

    Булевый (логический) тип

    Булевый тип ( boolean ) может принимать только два значения: true (истина) и false (ложь).

    Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».

    Infinity

    Глобальное свойство Infinity является числовым значением, представляющим бесконечность.

    Атрибуты свойства Infinity
    Записываемое нет
    Перечисляемое нет
    Настраиваемое нет

    Интерактивный пример

    Описание

    Infinity является свойством глобального объекта, то есть, это переменная в глобальной области видимости.

    Начальным значением Infinity является Number.POSITIVE_INFINITY . Значение Infinity (положительная бесконечность) больше любого другого числа, включая саму положительную бесконечность. Это значение ведёт себя как математическая бесконечность; например, любое положительное число, умноженное на Infinity даёт Infinity , а любое число, делённое на Infinity даёт 0.

    В спецификации ECMAScript 5 Infinity является свойством только для чтения (реализована в JavaScript 1.8.5 / Firefox 4).

    Типы данных JavaScript

    Здравствуйте уважаемые читатели! Любая программа, на каком бы языке она была написана, оперирует некоторыми данными: стоимость товара, температура воздуха, имя стилевого класса, цвет шрифта. Не составляют исключения и web-сценарии написанные на языке javascript. Причем javascript может работать с данными относящимся к разным типам. Сегодня и поговорим об этих типах данных.

    Получая данные из реального мира человек не задумываясь делит их на различные группы: цифры, буквы, звуки. Также и javascript разделяет данные на типы. Причем тип данных описывает их возможные значения и набор применимых к ним операций.

    Типы данных в javascript можно разделить на две категории: простые типы и составные. К простым типам относятся:

    • string — текстовые данные, например название города или чье-то имя;
    • number — числовые данные, например возраст или количество предметов;
    • boolean — логические данные, могут принимать только два значения true или false.

    К простым типам также относятся два специальных значения:

    • null;
    • undefined.

    К составным типам относятся более сложные данные:

    • array — массивы;
    • object — объекты;
    • function — функции.

    Далее поговорим о простых типах подробнее.

    Строки в javascript или тип данных String

    Строковые данные — это последовательности букв, цифр, знаков препинания, пробелов и других символов заключенные в одинарные или двойные кавычки. Причем строки заключенные в двойные кавычки могут содержать одинарные кавычки и наоборот. Примеры строк:

    Кроме букв, цифр и знаков препинания строки могут содержать специальные символы:

    \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.

    Для представления отрицательных значений перед числовым литералом ставится знак минус (-):

    Числа могут быть представлены в экспоненциальной форме:

    Таким образом, например, число 450000 можно записать как 4.5*10 5 . Тогда в экспоненциальной форме это число может быть представлено так:

    var number = 4.5e5

    Также имеется возможность записывать целые числа в восьмеричном и шестнадцатеричном формате. Восьмеричные числа записываются с нулем в начале (например, 033 или -012345), а шестнадцатеричные — с символами 0x в начале (например, 0x21F). Еще раз отмечу, что в JavaScript так можно записывать только целые числа.

    Специальные числовые значения NaN и Infinity в JavaScript

    В JavaScript определено несколько специальных числовых значений. Когда вещественное число превышает самое большое представимое значение, результату присваивается специальное значение бесконечности Infinity. Если отрицательное число меньше наименьшего представимого, результатом становиться отрицательная бесконечность или -Infinity.

    Значение бесконечности можно получить при делении числа на 0:

    alert (321/0); //Infinity

    Любое значение любого типа данных может быть преобразовано в булево значение. Причем только шесть значений в результате преобразования дают значение false:

    • undefined
    • null
    • 0
    • -0
    • NaN
    • «» — пустая строка

    Все остальные значения в результате преобразования дают значение true .

    Специальные значения null и undefined

    Кроме строк, чисел и булевых типов в JavaScript имеется еще два специальных типа: null и undefined .

    Считается, что значение null имеет объектный тип и оно говорит об отсутствии объекта. То есть если переменная равна null , то в ней не содержится допустимого объекта, массива, числа, строки или логического значения. При преобразовании в число значение null становиться 0 , при преобразовании в строку — строкой «null» и в логическом контексте принимает значение false .

    Другое специальное значение undefined означает, что переменной никогда не было присвоено какое-либо значение. То есть если объявить пременную, например x , и вызвать метод alert(x) , то на экране появиться окно сообщения со значением undefined :

    Когда значение undefined преобразуется в логический тип, оно преобразуется в значение false . При преобразовании в числовой тип – в значение NaN , а в строковой – в строку «undefined» .

    В JavaScript есть еще и сложные типы данных, но их мы рассмотрим в следующих статьях. На этом все! До новых встреч!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *