2.1 Переменные в JavaScript
JavaScript является гибким и динамическим языком программирования, который поддерживает различные способы объявления переменных и работы с типами данных. В этой лекции мы рассмотрим три ключевых способа объявления переменных (var, let, const) и основные примитивные типы данных в JavaScript.
Переменные в JavaScript
JavaScript – это язык с динамической типизацией. Переменные в нем не имеют типа. Любой переменной можно присвоить любое значение в любое время (но есть нюансы).
Чтобы создать переменную нужно написать конструкцию вида:
var name;
Переменной можно сразу же присвоить значение:
var name = value;
Но вообще-то в JavaScript существует аж целых 3 способа создания переменных. Вот о них мы сейчас подробнее и поговорим.
Оператор var
Переменные, объявленные с помощью var, имеют функциональную или глобальную область видимости. Они подвержены "всплытию" (hoisting), что означает, что их объявление перемещается в верхнюю часть своей области видимости при выполнении кода.
Пример:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
В этом примере переменная x поднимается в начало своей области видимости, поэтому первый console.log выводит undefined.
Другими словами, "всплытие" превращает наш код в этот:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
Оператор let
Разработчикам очень хотелось изменить поведение оператора var, но они боялись поломать миллионы уже написанных строк кода. Поэтому они просто придумали еще один оператор, которые тоже создает переменные, но с немного другим поведением.
Переменные, объявленные с помощью let, имеют блочную область видимости. Это означает, что они доступны только в пределах блока кода (обычно в фигурных скобках {}), в котором они объявлены. let не подвержен "всплытию" так, как var.
Пример:
Переменная y существует только внутри блока if.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
Оператор const
Переменные, объявленные с помощью const, также имеют блочную область видимости и не могут быть переназначены после их инициализации. Однако это не делает объекты, объявленные через const, неизменными — их свойства можно изменять.
То есть переменную менять нельзя, а объект, на который она ссылается — можно. Хотели как лучше, а получилось, как всегда.
Пример:
В этом примере константа x не может быть переназначена, но объект obj может изменяться.
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // Это допустимо
console.log(obj.name); // Bob
2.2 Примитивные типы данных
JavaScript поддерживает несколько примитивных типов данных, которые представляют собой простые значения, не являющиеся сложными объектами.
Тип Number
Представляет любые числовые значения, включая целые числа и числа с плавающей запятой.
Примеры:
let num = 42;
let pi = 3.14;
Тип String
Представляет текстовые данные: строки, символы, эмодзи. Все что похоже на строки — это сюда.
Примеры:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
Тип Boolean
Представляет логические значения true или false.
let isTrue = true;
let isFalse = false;
Тип Null
Представляет намеренное отсутствие значения.
let empty = null;
Если тип состоит из одного значение, которое означает отсутствие значения, то может он все-таки уникальное значение, чем уникальный тип?
Тип Undefined
Представляет значение переменной, которая была объявлена, но не инициализирована.
let notAssigned;
console.log(notAssigned); // undefined
2.3 Сравнение var, let и const
Давайте напоследок сравним наши три способа создания переменных еще раз:
| Характеристика | var | let | const |
|---|---|---|---|
| Область видимости | Функциональная или глобальная | Блочная | Блочная |
| Всплытие (Hoisting) | Да, но инициализация не всплывает | Нет | Нет |
| Переназначение | Да | Да | Нет |
| Инициализация | Необязательна | Необязательна | Обязательна |
JavaScript предоставляет несколько способов объявления переменных, каждый из которых имеет свои особенности и применимость в зависимости от контекста. var используется реже из-за своих особенностей всплытия и глобальной области видимости. let и const предпочитаются в современном JavaScript из-за их блочной области видимости и контроля над переназначением.
Примитивные типы данных позволяют работать с основными структурами данных, обеспечивая базовую функциональность, необходимую для создания сложных приложений. И это самый популярный язык в мире :)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ