Типы данных в JavaScript

Типы данных помогают построить классификацию данных в языках программирования. Например, число и строка символов представляют собой разные типы данных, которые JavaScript будет обрабатывать по-разному.

Это важно, потому что каждый тип данных может принимать определенные значения и выполнять определенные действия. Чтобы иметь возможность выполнять операции с переменными в JavaScript, важно понимать тип данных каждой заданной переменной.

Данный мануал ознакомит вас с типами данных JavaScript.

Примечание: Информация в руководстве не является исчерпывающей, но здесь вы сможете ознакомиться с основными опциями JavaScript.

Динамическая типизация

JavaScript является динамическим языком. Это значит, что проверка типа данных осуществляется во время запуска, а не компиляции.

Читайте также: Типы данных Python

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

Например, переменная t, определяемая ключевым словом var, может хранить разные типы данных; также ее можно инициализировать, но оставить неопределенной:

var t = 16;         // t is a number
var t = "Teresa";   // t is a string
var t = true;       // t is a Boolean
var t;              // t is undefined

Все переменные t содержат разные типы данных JavaScript. В JavaScript не нужно явно указывать тип данных переменной до ее использования.

Числа

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

var num1 = 93;
var num2 = 93.00;

В вышеприведенном примере обе переменные содержат числа, вне зависимости от того, есть в нем запятая или нет.

Экспоненциальная нотация в JavaScript позволяет сокращать очень большие или маленькие числа:

var num3 = 987e8;       // 98700000000
var num4 = 987e-8;      // 0.00000987

В JavaScript числа считаются точными до 15 цифр. Это означает, что после достижения 16-й цифры числа будут округлены:

var num5 = 999999999999999;     // remains as 999999999999999
var num6 = 9999999999999999;    // rounded up to 10000000000000000

Также числа в JavaScript имеют три символических значения:

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

-Infinity — числовое значение, которое представляет собой отрицательное число, приближающееся к бесконечности.

NaN – Not-а-Number, особое состояние числа с плавающей запятой.

Infinity и -Infinity возвращаются при подсчете числа за пределами максимально возможного числа, доступного в JavaScript. Они также появляются при подсчете неопределенных значений, например, при делении на ноль:

var num7 = 5 / 0;   // Infinity
var num8 = -5 / 0;  // -Infinity

Технически Infinity возвращается, если число превышает 1.797693134862315E+308, это верхний предел в JavaScript.

Аналогично, -Infinity будет отображаться, когда число выходит за нижний предел, -1.797693134862316E+308.

Число Infinity также можно использовать в циклах:

while (num9 != Infinity) {
// Code here will execute through num9 = Infinity
}

Для неопределенных чисел выводится NaN. Если вы попытаетесь выполнить математическую операцию над числом и нечисловым значением, вы получите NaN. Например:

var x = 20 / "Shark";   // x will be NaN

Поскольку 20 нельзя разделить на строку Shark, значение переменной х будет NaN.

Однако если строку можно оценить как числовое значение, JavaScript выполнит математическое выражение:

var y = 20 / "5";   // y will be 4

Поскольку JavaScript может рассмотреть 5 как числовое значение, 5 будет работать с математическим оператором деления.

Если одной переменной в выражении присвоено значение NaN, в результате будет NaN, даже если второй операнд является числом.

var a = NaN;
var b = 37;
var c = a + b;  // c will be NaN

Итак, в JavaScript существует только один числовой тип данных. В JavaScript не нужно разделять числа на целые и числа с плавающей запятой, поскольку JavaScript является динамическим языком.

Строки

Строка – это последовательность из одного или нескольких символов (букв, цифр и других символов). Строки представляют собой текстовые данные.

В JavaScript строки бывают как в одиночных, так и в двойных кавычках. Чтобы создать строку, нужно заключить последовательность символов в кавычки:

var singleQuotes = 'This is a string in single quotes.';
var doubleQuotes = "This is a string in double quotes.";

Вы можете использовать одинарные или двойные кавычки, но в коде одной программы нужно последовательно использовать один вид кавычек.

Программа «Hello, World!» демонстрирует, как используются строки в компьютерном программировании. По сути, в данном примере строка – это последовательность символов, которая составляет фразу «Hello, World!» в alert().

<!DOCTYPE HTML>
<html>
<head>
<script>
function helloFunction() {
alert("Hello, World!");
}
</script>
</head>
<body>
<p><button onclick="helloFunction()">Click me</button></p>
</body>
</html>

Запустив код и нажав кнопку Click me, вы увидите всплывающее окно с текстом:

Hello, World!

Как и другие типы данных, строки можно хранить в переменных.

var hw = "Hello, World!";

Затем можно отобразить строку, вызвав переменную:

...
<script>
var hw = "Hello, World!";
function helloFunction() {
alert(hw);
}
</script>
...
Hello, World!

Строки позволяют передавать информацию пользователю и обратно в программу.

Логический тип данных

Логический (или Булевый) тип данных состоит из двух значений – true и false.

Этот тип используется для представления значений истинности, связанных с логикой и алгоритмах в информатике.

Примечание: Этот тип данных назван в честь математика Джорджа Буля.

Многие операции в математике дают результаты, которые можно оценить как истинные или ложные:

Больше чем:

  • 500 > 100 true
  • 1 > 5 false

Меньше чем:

  • 200 < 400 true
  • 4 < 2 false

Равно:

  • 5 = 5 true
  • 500 = 400 false

Как и другие типы, логический тип данных можно хранить в переменных.

var myBool = 5 > 8; // false

Поскольку 5 не больше 8, переменная myBool будет иметь значение false.

Разрабатывая код в JavaScript, вы познакомитесь с тем, как работают логические данные и как различные функции и операции, оценивающие истинность, могут изменить ход программы.

Массивы

Массив может содержать несколько значений в пределах одной переменной. Это означает, что вы можете сохранить список значений внутри массива и итерировать их.

Каждое значение внутри массива называется элементом. Вы можете обратиться к элементам массива с помощью индекса.

Массивы определяются квадратными скобками [ ].

Массив строк выглядит так:

var fish = ["shark", "cuttlefish", "clownfish", "eel"];

Вызывая переменную fish, вы получите результат:

["shark", "cuttlefish", "clownfish", "eel"]

Массивы – очень гибкий тип данных, поскольку они изменяемы: вы можете добавлять, удалять и изменять значения элементов.

Объекты

Объект в JavaScript состоит из пар «ключ: значение».

Синтаксис объекта состоит из пар «ключ: значение». Объект выделяется фигурными скобками с обеих сторон ({}).

Пары в объекте разделяются пробелами:

var sammy = {firstName:"Wally", lastName:"Shark", color:"blue", location:"ocean"};

Также объект можно записать в несколько строк (особенно это применимо к большим объектам).

var wally = {
firstName: "Wally",
lastName: "Shark",
color: "blue",
location: "Ocean"
};

Работа с несколькими типами данных

Каждая создаваемая вами программа наверняка будет содержать несколько типов данных, однако операции обычно выполняются для одного типа данных. математические вычисления применяются к числам, а нарезка – к строкам.

Используя операторы, которые работают со всеми типами данных (например, оператор + может складывать числа или выполнять конкатенацию строк), вы можете получить неожиданный результат.

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

var o = "Ocean" + 5 + 3;

Вызвав переменную о, вы получите такой результат:

Ocean53

Однако если в строке сначала будут идти числа, а затем строка, оператор + выполнит сложение, а затем конкатенацию:

var p = 5 + 3 + "Ocean";
8Ocean

Из-за непредсказуемости результатов выполнять операции и методы удобнее в одном типе данных. Однако JavaScript не возвращает ошибок при смешивании типов данных, как это делают некоторые другие языки программирования.

Заключение

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

Tags: