webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
JavaScript · Урок 1 из 17

Переменные и типы

const/let, примитивные типы, === и полезные операторы.

Обновлено

Что такое переменная

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

const price = 100        // ярлык «price» → значение 100
const total = price * 2  // используете ярлык вместо значения

Без переменных пришлось бы повторять значения повсюду, и нельзя было бы работать с меняющимися данными (ввод пользователя, ответы сервера).

У переменной есть три вещи: имя, значение и область видимости (часть кода, где она видна).

Три способа объявления

const let var
Можно переприсвоить нет да да
Область видимости блок { } блок { } вся функция
Hoisting да, но в TDZ да, но в TDZ да, со значением undefined
Повторное объявление в той же области ошибка ошибка можно (опасно)
Когда использовать по умолчанию, почти всегда когда значение действительно меняется (счётчик, аккумулятор) никогда в новом коде
const name = 'Ana'
name = 'Ivan'        // ✗ TypeError: Assignment to constant variable

let count = 0
count = count + 1    // ✓

if (true) {
  let inside = 1
  var leaks = 2
}
inside               // ✗ ReferenceError — let живёт только в блоке
leaks                // 2 — var «утекает» из блока

const не значит «неизменяемый». Он фиксирует только связь имя → значение. Если значение — объект или массив, его содержимое может меняться:

const user = { name: 'Ana' }
user.name = 'Ivan'   // ✓ работает — меняется объект, а не связь
user = {}            // ✗ — попытка изменить связь

(Подробнее — в уроке Ссылки и иммутабельность.)

Что такое тип

У каждого значения есть тип — что это за данные и что с ними можно делать. JS — язык с динамической типизацией: тип есть не у переменной, а у значения. Одна и та же переменная let может хранить сначала число, потом строку.

Примитивные типы

Примитивы — простые неизменяемые значения, копируются по значению.

Тип Примеры Для
string 'Ana', "text", `Hello ${name}` текста
number 42, 3.14, -1, NaN, Infinity любых чисел (один тип для целых и дробных)
boolean true, false да / нет
undefined undefined «значения пока нет» — ставит JS
null null «пусто намеренно» — ставите вы
bigint 9007199254740993n очень больших целых
symbol Symbol('id') уникальных ключей (в приложениях редко)

Объекты

Всё, что не примитив, — object: объекты {}, массивы [], функции, Date, Map… Объекты копируются по ссылке.

null или undefined

undefined null
Кто ставит JS, автоматически вы, явно
Означает неинициализированная переменная, отсутствующее свойство, функция без return «здесь ничего нет, намеренно»
typeof 'undefined' 'object' (историческая ошибка)

Проверка типа

typeof 'a'          // 'string'
typeof 42           // 'number'
typeof undefined    // 'undefined'
typeof null         // 'object'   ← ловушка
typeof []           // 'object'   ← ловушка
typeof (() => {})   // 'function'
Array.isArray([])   // true       ← так проверяют массив
x === null          // так проверяют null

== или ===

=== (строгое) == (нестрогое)
Преобразует типы нет да, по правилам, которые трудно запомнить
0 === '' false 0 == '' → true 😬
Когда всегда практически никогда

Truthy и falsy

В if, &&, || любое значение приводится к boolean. Falsy-значений всего 6: false, 0, '', null, undefined, NaN. Всё остальное — truthy, включая '0', [] и {}.

Операторы для отсутствующих значений

Оператор Берёт значение справа, когда слева... Пример
|| любое falsy (включая 0, '') name || 'Аноним'
?? только null / undefined limit ?? 10 — сохраняет 0
?. — обращается, только если существует user?.address?.city

Правило: для значений по умолчанию используйте ??, а не || — иначе 0 и '' станут «отсутствующими».

Шаблонные строки

const msg = `Привет, ${name}! У вас ${count} сообщ.`

Обратные кавычки, выражения внутри ${}, можно писать в несколько строк.

Коротко

  • Переменная = имя, связанное со значением; const по умолчанию, let — когда меняется, var — никогда.
  • 7 примитивных типов (копируются по значению) + объекты (копируются по ссылке).
  • Всегда ===; ?? для значений по умолчанию; ?. для безопасного доступа.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.