JavaScript 2. Основные типы данных
Прошлая заметка на заданную тему вышла чересчур непростой. Очевидно, желая показать конкретный пример, который часто используют на реальных сайтах, я перегнул палку. Ну, первый блин комом. На этот раз я попробую начать сначала и действительно с азов. Опять же, в самом начале «на берегу», договоримся, что я буду показывать вам синтаксис языка ES6 от 2016 года, ибо начиная с него было привнесено много новшеств.
Не поверите, но начнём с переменных и типов данных в JavaScript. С одной стороны, в этом языке всего семь основных типов данных, с другой – любая объявленная переменная в разные моменты выполнения сценария может содержать значения любого из типов, то есть JavaScript не является языком с жёсткой типизацией. Объявляя переменную впервые, перед её именем следует в синтаксисе ES6 писать слово let, а в конце операторов обычно ставится точка с запятой «;». При этом, тип переменной определяется «на лету» из контекста, то есть, исходя из того, можно ли трактовать значение переменной как значение конкретного типа. Без паники, всё разберём на примерах.
Типы данных
- число (number) – как целые числа, так и числа с плавающей запятой. В качестве разделителя целой и дробной части выступает точка «.». Над числами можно производить арифметические действия (* умножение, / деление, + сложение, - вычитание и пр.). К этому же типу данных относят специальное значение NaN, которое обозначает ошибку в арифметическом действии и некоторые другие. Пример будет чуть ниже.
- строка (string) – почти что угодно, заключённое в кавычки. В их качестве выступают одинарные кавычки апострофы «’» или двойные «"». Есть и ещё один вид кавычек – обратные «`», с их помощью в строку можно, например, специальным образом встраивать значения других переменных.
- логический тип (Boolean), ещё говорят булевый тип – имеет только два значения: true (истина), можно также задавать как отличное от нуля число или непустую строку, но пока не буду об этом, чтобы не запутать вас. Второе значение – false (ложь). Как правило, в переменных такого типа хранится ответ типа да/нет на какой-то вопрос. «Да», значит true – истина, «нет» - false – ложь.
- пустое значение (null). В JavaScript это отдельный тип данных, который содержит только одно значение, собственно «null».
- неопределённое значение (undefined), как и null это отдельный тип данных, который принимает только одно значение. К слову, именно поэтому, проверяя переменную на неопределённое значение в JavaScript синтаксически правильно как проверять значение переменной на равенство undefined, так и проверять, что тип переменной совпадает с ним.
- объект (object) – составной и потому особенный. В объект можно собирать массу разных свойств, каждое из которых может являться каким угодно типом данных, да хоть в свою очередь объектом. Если вы имеете опыт объектно-ориентированного программирования (ООП) в других языках, то и сами понимаете, о чём я говорю. Для остальных же скажу, что в прошлой заметке по JavaScript, том самом первом уроке, который оказался не таким уж простым для новичков, узел (Node) был как раз объектом. Мы будем довольно часто иметь дело с объектами. Уверен, они вам очень понравятся ))
- символ (symbol) – позволяет создавать уникальные идентификаторы объектов. Ну, до знакомства с объектами, мы с ними не будем встречаться, я думаю.
Вот вроде и все семь основных типов, однако все месте они представляют серьёзный инструментарий. А если сюда ещё добавить массивы, и то что как переменные можно оформлять функции, например для обратного их вызова и Бог ещё знает чего, то нам точно не будет скучно в рамках этого курса. Ну, если, конечно меня хватит на целый курс )) Сразу вспоминается известный киногерой: «А не замахнуться ли нам на Вильяма, нашего, Шекспира?». Давайте замахнёмся, чего уж там.
Примеры
let userName = "Владимир"; // похоже это строка, значение присваивается через =
userName = 43; // ошибкой не является, хотя смысл названия пропадает ))
let num = 5; // целое число
let pi = 3.14159; // число Пи с точностью до 5 знаков
Функция alert(...) создаёт диалоговое окно и выводит в нём то, что указано в скобках в качестве аргументов.
let name = "Вася";
alert(name / 5); // Делим строку на число, получаем значение NaN - ошибка
alert( 25 / 0 ); // деление на ноль даёт + бесконечность - ещё одно особое значение (Infinity)
Увы, через обратный апостроф на Голосе публикуется код, поэтому демонстрация этого способа частично картинкой.
let firstName = "Петя"; // используем двойные кавычки
let surName = 'Иванов'; // теперь апострофы
С булевыми переменными будем знакомиться позже, на конкретных примерах. ))
let num = null; // означает "ничего", это НЕ то же самое, что пустая строка ""
let age = undefined; // можно, но не желательно
В этом контексте лучше использовать null. В свою очередь undefined желательно использовать при проверках. Объекты и всякие там массивы будут потом, а сегодня что-то выдохся. Удачи нам всем. ))