Переменные в JavaScript

Переменные — это контейнеры для хранения данных. В JavaScript есть три способа объявления: var, let и const. Современный стандарт рекомендует использовать const для неизменяемых значений и let для изменяемых. var устарел и может вызывать проблемы из-за hoisting (поднятия переменных).

Пример объявления:

let message = "Привет";
const pi = 3.14;
var oldVariable = "Устарело";

Область видимости определяет, где переменная доступна. let и const имеют блочную область видимости — они видны только внутри блока {}. var имеет функциональную область видимости — видна throughout всей функции.

Частые ошибки с переменными

Новички часто сталкиваются с проблемами:

  • Использование переменной без объявления (приводит к глобальной переменной или ошибке в strict mode)
  • Попытка изменить const (вызывает TypeError)
  • Путаница с областью видимости var
Сравнение способов объявления переменных
Тип Область видимости Переопределение Поднятие (hoisting)
Функциональная Да Да (с undefined)
Блочная Да Да (но недоступна до объявления)
Блочная Нет Да (но недоступна до объявления)

Типы данных

JavaScript — язык с динамической типизацией. Тип определяется в момент присваивания значения и может меняться. Основные примитивные типы: number, string, boolean, null, undefined, symbol, bigint.

Оператор typeof помогает определить тип переменной:

typeof "Текст" // "string"
typeof 42 // "number"
typeof true // "boolean"

Особенности типов данных:

  • NaN (Not a Number) имеет тип «number»
  • null возвращает «object» (историческая особенность)
  • Разница между null (намеренное отсутствие значения) и undefined (значение не присвоено)

Преобразование типов

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

"5" + 2 // "52" (конкатенация)
"5" - 2 // 3 (преобразование в число)

Явное преобразование безопаснее:

Number("5") + 2 // 7
String(5) + 2 // "52"

Функции

Функции — это блоки кода, которые выполняются при вызове. Можно объявлять несколькими способами: Function Declaration, Function Expression, стрелочные функции.

function sum(a, b) { return a + b;
}

Стрелочные функции (современный стандарт):

const sum = (a, b) => a + b;

Функции имеют доступ к внешним переменным (замыкания) и могут возвращать значения. Если return нет, функция возвращает undefined.

Параметры и аргументы

Параметры — это переменные в объявлении функции, аргументы — фактические значения при вызове. JavaScript не проверяет количество аргументов — лишние игнорируются, недостающие становятся undefined.

Значения параметров по умолчанию:

function greet(name = "Гость") { return `Привет, ${name}!`;
}

Практические рекомендации

Чек-лист для начинающих:

  • Всегда используйте ‘use strict’ в начале файла
  • Предпочитайте const и let вместо var
  • Давайте переменным и функциям понятные имена
  • Проверяйте типы при работе с пользовательским вводом
  • Тестируйте функции с разными аргументами

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

Частые вопросы

Чем отличаются let, const и var в JavaScript?

let и const появились в ES6 и имеют блочную область видимости. const нельзя переопределить, let — можно. var имеет функциональную область видимости и поднимается (hoisting), что может вызывать неожиданное поведение.

Какие основные типы данных в JavaScript?

Основные примитивные типы: number, string, boolean, null, undefined, symbol, bigint. Также есть объекты (object) — массивы, функции, даты и другие составные типы.

Что такое строгий режим в JavaScript?

Строгий режим (use strict) включает более строгую проверку синтаксиса, предотвращает некоторые ошибки, запрещает неявное объявление глобальных переменных. Рекомендуется использовать всегда.