Переменные и типы данных
1. Переменные
Переменные используются для хранения данных и состоят из идентификатора (имени) и области в памяти, где хранится их значение. Переменную можно представить как коробку с названием, в которой что-то лежит (значение).
1.1. Имена переменных
Идентификатор — это имя переменной, функции, параметра или класса. Состоит из одного или нескольких символов в следующем формате:
Первым символом должна быть буква
a-z
илиA-Z
, символ подчеркивания_
или знак доллара$
.Другие символы могут быть буквами
a-z
,A-Z
, цифрами0-9
, подчеркиваниями_
и знаками доллара$
.Все идентификаторы чувствительны к регистру. Это значит, что переменные
user
,usEr
иUser
различны.
Имя переменной должно быть понятным.
❌ Плохо
chislo korzina_tovarov profil_polzovatelya tekushiy_mesyaz
✅ Хорошо
number cart userProfile currentMonth
Использование camelCase-нотации для идентификаторов это стандарт. При таком подходе, первое слово пишется строчными буквами, а каждое дополнительное начинается с прописной буквы. К примеру: user
, greetUser
, getUserData
, isActive
, activeGuestCount
, totalWorkerSalary
.
1.2. Ключевые слова
Есть список зарезервированных ключевых слов, которые имеют специальное значение и используются для определенных конструкций. Нельзя использовать ключевые слова как идентификаторы.
Таблица зарезервированных слов
1.3. Объявление переменных
В современном JavaScript есть 2 ключевых слова для объявления переменных.
let
— объявляет переменную, которой можно присвоить новое значение после объявления, то есть переопределить.const
— так же объявляет переменную, но с одним отличием: объявляемая переменная должна быть немедленно инициализирована значением и этой переменной не может быть присвоено другое значение после инициализации.
Создание переменной без ключевого слова let
или const
приведет к ошибке.
/*
* Для объявления переменной используются ключевые слова let и const,
* за которыми следует имя переменной.
* Переменным объявленным через let не обязательно сразу присваивать значение.
*/
let age;
/*
* Переменные объявленные как const обязательно должны быть инициализированы
* значением во время объявления, иначе будет ошибка.
*/
const yearOfBirth = 2006;
/*
* Значение переменной можно получить обратившись к ней по имени.
* console.log() используется для вывода данных в консоль разработчика,
* с этим методом более детально познакомимся позже.
*/
console.log(yearOfBirth); // 15
/*
* Если переменной объявленной как let, изначально не присвоено значение,
* она инициализируется специальным значением undefined (не определено).
*/
console.log(age); // undefined
/*
* Если переменная объявлена как let, ее значение можно перезаписать.
*/
age = 14;
console.log(age); // 14
/*
* Если переменная объявлена как const, перезаписать ее значение нельзя.
* При попытке присвоить новое значение будешь ошибка выполнения скрипта.
*/
yearOfBirth = 2020; // будет ошибка
1.4. Когда использовать const и let
Единственное отличие const
и let
состоит в том, что const
запрещает повторное присваивание переменной какого-либо значения. Объявление const
делает код более читаемым, так как переменная всегда ссылается на одно и то же значение. В случае с let
такой уверенности нет.
Будет разумно использовать let
и const
так:
Используйте
const
по умолчанию, большинство переменных будут объявлены именно так.Используйте
let
, если потребуется присвоить переменной другое значение во время выполнения скрипта.
1.5. константы и КОНСТАНТЫ
Имена КОНСТАНТ - переменных, значение которых не изменяется никогда на протяжении работы всего скрипта, обычно записываются в формате UPPER_SNAKE_CASE
.
// Константа хранящая значение цвета
const COLOR_TEAL = '#009688';
// Константа хранящая сообщение о авторизации
const MESSAGE_LOGIN_SUCCESS = 'Добро пожаловать!';
Абсолютное большинство переменных – константы в другом смысле, они просто не изменяют значение после присвоения. Но при разных запусках скрипта, это значение может быть разным. Имена таких переменных записывают используя формат camelCase
.
1.6. Обращение к переменной
Важно различать неопределенные и необъявленные переменные.
Неопределенная (undefined) — это переменная, которая была объявлена, но не инициализирована значением, по умолчанию ей присваивается значение
undefined
как начальное.Необъявленная (undeclared или not defined) — это переменная, которая не была объявлена в доступной области видимости.
let name;
/*
* Переменная name объявлена, но не инициализирована, поэтому
* ее значение undefined (не определено), тогда как переменная age
* не была объявлена, поэтому доступ к ней вызывает ошибку ReferenceError
*/
console.log(name); // undefined
console.log(age); // ReferenceError: age is not defined
Попытка обратиться к пременной до ее объявления вызовет ошибку.
// console.log(a); // ReferenceError: a is not defined
let a = 10;
console.log(a); // 10
// console.log(b); // ReferenceError: b is not defined
const b = 15;
console.log(b); //15
2. Типы примитивов
JavaScript это динамический, слабо типизированный язык, поэтому переменная не ассоциируется с каким-либо типом данных, тип есть у значения переменной. То есть переменная может хранить значения разных типов.
2.1. Number
Целые числа и числа с плавающей запятой. После объявления переменной, можно инициализировать ее числовым значением.
const age = 20;
const number = 5.8;
2.2. String
Строки - это просто текст, последовательность из нуля или более символов. Строка начинается и заканчивается одиночной '
или двойными кавычками "
. Открывающая и закрывающая кавычки должны быть одинаковые.
const name = 'Mango';
2.3. Boolean
Логический тип данных, флаги состояния. Имеет только два значения: true
и false
, в нижнем регистре. Например на вопрос включен ли свет в комнате можно ответить да (true
) или нет (false
).
true
— да, верно, истина, 1false
— нет, неверно, ложь, 0
Обратите внимание на имена переменных содержащих буль. Они задают вопрос, и ответ на его — да или нет.
const isAuthenticated = true;
const canMerge = false;
const hasChildren = true;
const isModalOpen = false;
2.4. null
Особое значение, которое по сути значит ничто
. Используется в тех ситуациях, когда необходимо явно указать отсутсвие значения. К примеру если в базе данных не нашли пользователя, то можно сказать что значение null
.
// Переменная guest пуста и лишена значения
const guest = null;
2.5. undefined
Еще одно специальное значение. По умолчанию, когда переменная объявляется, но не инициализируется, ее значение не определено, ей присваивается undefined
.
let name;
console.log(name); // undefined
2.6. Оператор typeof
Для получения типа значения переменной, используется оператор typeof
, который возвращает на место своего вызова тип значения переменной указанного после него. Возвращаемое значение это просто строка в которой указан тип.
// undefined
let a;
console.log(typeof a); // "undefined"
// null
const b = null;
console.log(typeof null); // "object"
// Number
const c = 5;
console.log(typeof c); // "number"
// String
const d = 'JavaScript is awesome!';
console.log(typeof d); // "string"
// Boolean
const e = false;
console.log(typeof e); // "boolean"
Last updated